#java #unit-testing #testing #junit #mockito
Вопрос:
Как проверить с помощью Mockito, что какой-то метод был вызван в другом методе? В моем случае это Collections.reverse(задачи) в классе ниже:
Мой класс:
public class TaskReadService {
private final TaskRepository repository;
public TaskReadService(TaskRepository repository) {
this.repository = repository;
}
public List<Task> readAllOrdered(TasksListOrder order) {
var tasks = repository.readAll();
if (order.equals(TasksListOrder.BY_STATUS)) {
tasks.sort(Comparator.comparing(jpaEntity -> jpaEntity.status));
}
if (order.equals(TasksListOrder.BY_PRIORITY)) {
tasks.sort(Comparator.comparing(jpaEntity -> jpaEntity.priority));
}
Collections.reverse(tasks);
return tasks;
}}
Комментарии:
1. пожалуйста, добавьте свой тестовый класс
2. Вы не хотите проверять, что этот метод вызывается, вы хотите утверждать, что вывод верен, то, как список был изменен, не имеет значения.
3. Хорошо, вы правы, но я все еще хочу знать, как проверить, что какой-то метод был вызван в другом методе.
Ответ №1:
Как указано в комментарии, вам не нужно подтверждать звонок Collections#reverse
. Ваш тестовый код не должен беспокоиться об этом, а должен сосредоточиться на возвращаемом результате, правильность которого должна быть подтверждена (т. е. правильное содержимое, порядок и т. Д. и т. Д.).
Теперь, что касается вашего вопроса о том, как проверять вызовы методов, простой просмотр документации Mockito показывает использование Mockito#verify
метода, что именно вам нужно для проверки методов.