В заказе:
Требуется ли assertEquals()
: Зависит от.Есть ли что-нибудь, что было сделано с результатом personRepository.count()
в personService
перед его возвращением, что может изменить его значение?Если ответ «определенно нет», то вам может не потребоваться assertEquals()
- но если есть вероятность, что что-то может пойти не так, то assertEquals()
позаботится о том, чтобы это не произошло.
Нужно ли вам verify()
: Это зависит.Есть ли вероятность, что personRepository.count()
не позвонили?Или что он вызывался более одного раза (verify()
по умолчанию ожидает, что его аргумент будет вызван ровно один раз)?Если нет, то вам это может не понадобиться.
Вам нужны оба: Это зависит (замечая образец?).Смотри выше: они делают разные вещи.Есть много случаев, когда вы хотите, чтобы обе вещи были проверены: 1. что верный результат возвращается, и 2. что результат возвращается, выполняя действия, которые вы ожидаете сделать.
Вы делаете это правильно: Ну ... Это зависит.Выглядит ли personRepository.count()
как
public int count() {
return this.personService.count();
}
Если это так, вам, вероятно, не нужно много тестировать его вообще.Если вы настаиваете на проведении теста, пропуск verify()
, вероятно, будет в порядке, потому что в приведенном выше методе нет другого способа получить значение , чем при вызове функции, которую вы бы verify
использовали, и она возвращаетэто значение, так что вряд ли оно может быть вызвано более одного раза.
С другой стороны, если ваша функция выглядит следующим образом:
public int count() {
// get a personService from an injector
// log the personService's details
// generate a random number
// try calling count() on personService, catch an error
// if you caught the error, return the random number
}
Тогда, возможно, вы делаете хотитедо verify()
, потому что внезапно происходит много вещей, и некоторые из них (например, случайное число) могут быть сбиты с толку для правильного функционирования, даже если что-то идет ужасно неправильно.