Saya memiliki metode pribadi di kelas pengujian saya yang membangun objek yang biasa digunakan Bar
. The Bar
konstruktor panggilan someMethod()
metode dalam objek saya mengejek:
private @Mock Foo mockedObject; // My mocked object
...
private Bar getBar() {
Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod()
}
Dalam beberapa metode pengujian saya, saya ingin memeriksa someMethod
juga dipanggil oleh tes tertentu. Sesuatu seperti yang berikut ini:
@Test
public void someTest() {
Bar bar = getBar();
// do some things
verify(mockedObject).someMethod(); // <--- will fail
}
Ini gagal, karena objek yang diejek telah someMethod
dipanggil dua kali. Saya tidak ingin metode pengujian saya peduli dengan efek samping getBar()
metode saya , jadi apakah masuk akal untuk mengatur ulang objek tiruan saya di akhir getBar()
?
private Bar getBar() {
Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod()
reset(mockedObject); // <-- is this OK?
}
Saya bertanya, karena dokumentasi menyarankan menyetel ulang objek tiruan umumnya merupakan indikasi tes buruk. Namun, ini terasa baik bagi saya.
Alternatif
Pilihan alternatif tampaknya memanggil:
verify(mockedObject, times(2)).someMethod();
yang menurut saya memaksa setiap tes untuk mengetahui tentang harapan getBar()
, tanpa hasil.