Jawaban oleh Tomasz Nurkiewicz tampaknya tidak menceritakan keseluruhan cerita!
NB Mockito versi: 1.10.19.
Saya seorang pemula Mockito, jadi tidak bisa menjelaskan perilaku berikut: jika ada seorang ahli di luar sana yang dapat meningkatkan jawaban ini, silakan saja.
Metode yang dimaksud di sini, getContentStringValue
adalah TIDAK final
dan TIDAK static
.
Baris ini memang memanggil metode asli getContentStringValue
:
doReturn( "dummy" ).when( im ).getContentStringValue( anyInt(), isA( ScoreDoc.class ));
Baris ini tidak memanggil metode asli getContentStringValue
:
doReturn( "dummy" ).when( im ).getContentStringValue( anyInt(), any( ScoreDoc.class ));
Untuk alasan yang tidak dapat saya jawab, menggunakan isA()
penyebab perilaku (?) "Jangan panggil metode" doReturn
gagal.
Mari kita lihat tanda tangan metode yang terlibat di sini: keduanya adalah static
metode Matchers
. Keduanya dikatakan oleh Javadoc untuk kembali null
, yang agak sulit untuk membuat kepala Anda berputar. Agaknya Class
objek diteruskan sebagai parameter diperiksa tetapi hasilnya tidak pernah dihitung atau dibuang. Mengingat bahwa null
dapat berdiri untuk kelas apa pun dan bahwa Anda berharap metode yang diejek tidak dapat dipanggil, tidak dapat tanda tangan isA( ... )
dan any( ... )
hanya kembali null
daripada parameter generik *<T>
?
Bagaimanapun:
public static <T> T isA(java.lang.Class<T> clazz)
public static <T> T any(java.lang.Class<T> clazz)
Dokumentasi API tidak memberikan petunjuk tentang hal ini. Tampaknya juga mengatakan perlunya perilaku "jangan panggil metode" semacam itu "sangat jarang". Secara pribadi saya menggunakan teknik ini sepanjang waktu : biasanya saya menemukan bahwa mengejek melibatkan beberapa baris yang "mengatur adegan" ... diikuti dengan memanggil metode yang kemudian "memainkan" adegan dalam konteks tiruan yang telah Anda tampilkan .. ... dan saat Anda mengatur pemandangan dan alat peraga, hal terakhir yang Anda inginkan adalah para aktor memasuki panggung kiri dan mulai memerankan hati mereka ...
Tapi ini jauh melampaui nilai gajiku ... Aku mengundang penjelasan dari pendeta tinggi Mockito yang lewat ...
* Apakah "parameter umum" istilah yang tepat?