Търсен, но неизвикан: Въпреки това имаше други взаимодействия с този макет:

Търсен, но неизвикан: Въпреки това имаше други взаимодействия с този макет:

Това е грешка на mockito, която бихте хванали, когато се опитвате да проверите извикването на обект на конкретен метод, но това, което се случва, е, че сте взаимодействали с друг метод на този обект, но не и със споменатия. Ако имате обект с име 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);
}

След това можете да имате два отделни теста, които можете да изолирате, като зададете нулева стойност и ненулева стойност за id в 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