Bagaimana saya memverifikasi bahwa metode TIDAK dipanggil dalam Moq ?
Apakah ada yang seperti AssertWasNotCalled?
UPDATE: Mulai dari Versi 3.0, sintaks baru dapat digunakan:
mock.Verify(foo => foo.Execute("ping"), Times.Never());
PEMBARUAN : Sejak versi 3, periksa pembaruan untuk pertanyaan di atas atau jawaban Dann di bawah.
Baik, buat tiruan Anda ketat sehingga akan gagal jika Anda memanggil metode yang tidak Anda harapkan
new Mock<IMoq>(MockBehavior.Strict)
Atau, jika Anda ingin tiruan Anda longgar, gunakan .Throws (Exception)
var m = new Mock<IMoq>(MockBehavior.Loose);
m.Expect(a => a.moo()).Throws(new Exception("Shouldn't be called."));
Jalankan verifikasi setelah tes yang memiliki
Times.Never
set enum. misalnyasumber
Dicuri dari: Jawaban John Foster untuk pertanyaan, "Perlu bantuan untuk memahami Moq dengan lebih baik"
sumber
Sebenarnya, lebih baik untuk menentukan
.AtMost(0)
setelah pernyataan Pengembalian.Meskipun "melempar" juga berfungsi,
AtMost(0)
IMHO lebih ekspresif.sumber
Gunakan .AtMostOnce ();
Setelah tes yang sebenarnya, panggil metode itu lagi. Jika melempar pengecualian, itu disebut.
sumber