Разыскивается, но не вызывается: однако с этим макетом были и другие взаимодействия:

Разыскивается, но не вызывается: однако с этим макетом были и другие взаимодействия:

Это мокито-ошибка, которую вы могли бы поймать при попытке проверить вызов объекта для определенного метода, но происходит то, что вы взаимодействуете с другим методом этого объекта, но не с упомянутым. Если у вас есть объект с именем CustomerService и вы говорите, что у него есть два метода с именами saveCustomer() и verifyExistingCustomer(), и ваш mockito выглядит примерно так: verify(customerService, atleast(1)).verifyExistingCustomer(customer), но в вашей реальной службе вы вызвали saveCustomer() хотя бы один.

Есть идеи, как это решить?


person Jigs    schedule 31.07.2011    source источник


Ответы (1)


Из того, что вы описываете, похоже, что вы говорите своим издевательствам, что ожидаете вызова verifyExistingCustomer(), но на самом деле вы его не вызываете.

Вероятно, вам следует взглянуть на свой тестовый дизайн, в частности, убедиться, что вы можете (с помощью насмешек) изолировать свои тесты для тестирования каждого метода по отдельности.

Если в вашем коде есть что-то, что решает, следует ли вызывать saveCustomer() или verifyExistingCustomer(), вам следует попытаться смоделировать данные, которые проверяет код, чтобы вы могли протестировать каждый по отдельности.

Например, если ваш код выглядел так:

if (customer.getId() == 0) {
 saveCustomer(customer);
} else {
 verifyExistingCustomer(customer);
}

Затем у вас может быть два отдельных теста, которые вы можете изолировать, установив нулевое значение и ненулевое значение для идентификатора в клиенте.

Если вы хотите поделиться своим кодом, я, вероятно, мог бы привести вам лучший пример.

person Caps    schedule 01.08.2011
comment
Я ожидаю, что голосование скажет «принято», если это так. Или хотя бы комментарий от @Jigs. - person walters; 08.11.2012
comment
Вот это да. Иногда я клянусь, что скучаю по самым глупым вещам, и такие ответы экономят мне время. :-D Спасибо! - person MackProgramsAlot; 05.12.2017
comment
Мне потребовалось чертовски много времени, чтобы наконец наткнуться на это.. Спасибо @Caps за спасение моего дня! - person Romeo Sierra; 03.08.2020