Testuję metodę void, która wywołuje kilka innych metod void w klasie (wszystkie te metody są w tej samej klasie). Metoda jest coś wzdłuż tych linii ...Jak zignorować kilka wywołań metod void w metodzie void w Mockito
public void methodToTest() {
methodA();
methodB();
}
void methodA() {
methodA1();
methodA2();
methodA3();
}
Co chciałbym zrobić to spowodować methodA()
powyżej, aby nic nie robić. Oznacza to, że chcę methodA()
w zasadzie być tak:
void methodA() { }
Próbowałem zarówno doThrow()
i doAnswer()
na methodA()
bezskutecznie. To tak, jakby obaj byli całkowicie ignorowani.
Przykładem co próbowałem ...
doThrow(new RuntimeException()).when(mockedClass).methodA();
Czy istnieje sposób, aby to zrobić tylko za pomocą Mockito? Nie jestem uprawniony do zmiany klasy, która jest modyfikowana.
To powinno zadziałać, czy na pewno "metodaA" nie jest "ostateczna"? – Brice
'methodA' nie jest" ostateczna " –
patrząc wstecz na twój fragment wygląda tak, jakbyś chciał wykonać częściową symulację, może tylko wykonując' methodB', podczas gdy wykonujesz 'methodA'. Z całą pewnością używasz 'mock (YourObject.class)', wtedy oczywiście nie robi nic, a na pewno nigdy nie wykonasz prawdziwego kodu. Możesz osiągnąć to, co chcesz "szpiegować (YourObject.class)", to domyślnie wykona prawdziwy kod. Jednak częściowe makiety są uznawane za zapachy testowe, jeśli nie są zapachem projektowym, powinieneś poszukać okazji do tego, aby zachowanie 'methodA' było zależnością, którą możesz na przykład wyeksponować w swoim API jako' AStrategy'. – Brice