Berhati-hatilah bahwa Mockito.when (Object) selalu disarankan untuk stubbing karena argumennya aman dan lebih mudah dibaca (terutama ketika stubbing panggilan berurutan).
Inilah saat-saat langka ketika doReturn () berguna:
1. Saat memata-matai benda nyata dan memanggil metode nyata pada mata-mata membawa efek samping
List list = new LinkedList(); List spy = spy(list);
// Impossible: metode nyata disebut so spy.get (0) melempar IndexOutOfBoundsException (daftarnya belum kosong)
when(spy.get(0)).thenReturn("foo");
// Anda harus menggunakan doReturn () untuk mematikan:
doReturn("foo").when(spy).get(0);
2. Mengesampingkan pengecualian-stubbing sebelumnya:
when(mock.foo()).thenThrow(new RuntimeException());
// Impossible: metode foo () exception-stubbed dipanggil jadi RuntimeException dilempar. when(mock.foo()).thenReturn("bar");
// Anda harus menggunakan doReturn () untuk mematikan:
doReturn("bar").when(mock).foo();
Skenario di atas menunjukkan kompromi sintaksis elegan Mockito. Perhatikan bahwa skenarionya sangat langka. Memata-matai harus sporadis dan mengabaikan pengecualian-sangat jarang. Belum lagi bahwa secara umum mengesampingkan stubbing adalah bau kode potensial yang menunjukkan terlalu banyak stubbing.
doReturn()
yang bermanfaat.