Я хочу протестировать этот класс, поэтому он покажет, что я вызываю ws с правильными параметрами:
class MyService {
public static boolean sendEmail(MyWebService ws) {
if (!ws.sendCustomEmail("me@example.com", "Subject", "Body")) {
throw new RuntimeException("can't do this");
}
// ... some more logic which can return false and should be tested
return true;
}
}
Есть ли способ объединить mockito spy
и thenReturn
?Мне нравится, как spy
будет отображать фактические вызовы методов, а не просто сообщение об assertionFailed.
@Test
void myTest() {
MyService spyWs = Mockito.spy(MyWebService.class);
// code below is not working, but I wonder if there is some library
verify(spyWs, once())
.sendCustomEmail(
eq("me@example.com"),
eq("Subject"),
eq("here should be another body and test shou")
)
.thenReturn(true);
MyService::sendEmail(spyWs);
}
В результате я хочу получить сообщение об ошибке , показывающее мне разницу между параметрами, которыеожидаемый и фактический, как у обычного шпиона:
Test failed:
sendCustomEmail(eq("me@example.com"), eq("Subject"), eq("here should be another body and test should show diff")) was never called
sendCustomEmail(eq("me@example.com"), eq("Subject"), eq("Body")) was called, but not expected
Ожидаемый:
- Я знаю, что могу сделать просто заглушку и затем проверить на исключение, но это не покажет разницу в параметрах