Wygląda na to, że tylko mockito sprawdza, czy metoda pozornego obiektu jest wywoływana, a obiekt próbny zawsze ma cokolwiek. jak doReturn(). kiedy (atrapa obiektu) ...jak zweryfikować metodę obiektu niemostugowego?
Ale mogę creat atrapa obiektu i zdefiniować doReturn(). kiedy (atrapa obiektu) .. a następnie zweryfikować sposób inny obiekt nazywa?
Oto, co chcę zrobić: definiuję fałszywe środowisko i zwracam odpowiedź bez względu na to, co się stanie. Ale wtedy chcę sprawdzić różne metody innegoObj jest wywoływana w różnych przypadkach.
Jak to zrobić?
public class BaseClass {
private Environment mockEnvironment;
@Test
public void testcase() {
setMockitoEnvironment();
response = foo(mockEnvironment, argument1);
verify(anotherObj).codePath1(...);
response = foo(mockEnvironment, argument2);
verify(anotherObj).codePath2(...);
}
}
//this method successfully return a response with any input
//because I do not care how response is eventually generated,
//I only care whether code path reaches createResponse() via
//code path 1 or code path 2.
private void setMockitoEnvironment() {
mockEnvironment = mock(Environment.class);
doReturn (response).when(mockEnvironment).createResponse(for any input);
}
private Response foo(...) {
...
return createResponse(...);
}
To oznacza, że może potrzebować utworzyć i wstrzyknąć wiele wyśmianych obiektów, jeśli chcę zweryfikować wiele rzeczy? to nie jest wygodne. – user389955
@ user389955 Tak, musisz ustawić każdy obiekt, który chcesz sprawdzić jako szpieg. O ile wiem, nie ma na to odwrotu. Mockito musi dodać proxy do obiektów, a ktoś musi powiedzieć Mockito, który sprzeciwia się proxy. –
Zamiast mówić "// robić rzeczy", może być pomocne dodanie, że to "innyObjSpy" musi wywoływać testowanie metody. – jwehrle