Rozważmy następującą metodę:Jak pozorować wywołanie metody i wartość zwracaną bez uruchamiania metody?
public boolean isACertainValue() {
if(context.getValueA() != null && context.getValueA().toBoolean() == true) {
if(context.getType() != null && context.getType() == ContextType.certainType) {
return true;
}
}
return false;
}
nie pisałem tego kodu, to jest brzydki jak cholera, to jest całkowicie nadmiernie skomplikowane, ale mam z nim pracować.
Teraz chcę przetestować metodę, która polega na wywołaniu tej metody.
Myślałem, że mogę sobie z tym poradzić przez:
Mockito.when(spy.isACertainValue()).thenReturn(true);
bo to przypadek Chcę przetestować.
Ale to nie działa, ponieważ jest jeszcze wywołanie metody ciało:/
uzyskać nullpointers a raczej coś w rodzaju
misusing.WrongTypeOfReturnValue; Boolean nie może zostać zwrócony przez getValueA(). getValueA() powinien powrócić ZMIENNAa
Więc próbowałem (jako obejście) zrobić:
Mockito.when(contextMock.getValueA()).thenReturn(new ValueA());
i Mockito.when(contextMock.getType()).thenReturn(ContextType.certainType);
ale potem dostaję NullPointer że nie może wydaje się być w stanie do debugowania.
Jak to się robi w tym przypadku?
Dokładnie to robimy, ale może jest tam wartość IN tej wartości, której potrzebujesz dalej w teście, więc powinieneś także wyśmiać zwracany obiekt, a nie tylko zwracać instancja tworzona z (domyślnym) konstruktorem. – Stultuske