Mam następujące klasy:PowerMockito: jak wyśmiewać metody wywoływane przez konstruktora?
public class Foo {
public Foo() {
initField1();
initField2();
initField3();
}
}
muszę zmienić zachowanie (mock) initField1()
i initField3()
dla nich co zrobić nic, lub coś innego, że faktycznie robią. Jestem zainteresowany wykonaniem rzeczywistego kodu initField2().
Chcę napisać następujący test:
Foo foo = new Foo();
assertTrue(foo.myGet());
myGet()
zwraca atrybut Foo, który został obliczony przez initField2()
.
Metody initField()
są oczywiście prywatne.
Jak mogę zrobić coś takiego?
Dzięki za pomoc i pozdrawiam.
To jest starsza wersja kodu. Wolę nie modyfikować testowanej klasy, pisząc nowy konstruktor przyjmujący argumenty na przykład. Chcę, aby wykonano tylko 'initField2()', ponieważ odpowiada za ustawienie pola, które chcę przetestować. Nie interesuje mnie testowanie reszty logiki konstruktora. –
Mockito ma na celu udawać interakcję, PowerMock ma na celu wyśmiać częściowe, wewnętrzne działanie klasy dla starszego kodu, więc ta odpowiedź jest po prostu błędna. – eis