回答:
更新:バージョン3以降、上記の質問または下記のDannの回答の更新を確認してください。
どちらか、モックを厳格にして、期待していないメソッドを呼び出すと失敗するようにします
new Mock<IMoq>(MockBehavior.Strict)
または、モックを緩くしたい場合は、.Throws(Exception)を使用します
var m = new Mock<IMoq>(MockBehavior.Loose);
m.Expect(a => a.moo()).Throws(new Exception("Shouldn't be called."));
Times.Never
列挙型が設定されているテストの後に検証を実行します。例えば
_mock.Object.DoSomething()
_mock.Verify(service => service.ShouldntBeCalled(),Times.Never());
盗まれたもの:「Moqをよりよく理解するために助けが必要です」という質問に対するJohn Fosterの回答
65歳以上の人がメソッドに渡されたときにpayメソッドが呼び出されないことをテストする必要があるかもしれません。
[Test] public void Someone_over_65_does_not_pay_a_pension_contribution() { var mockPensionService = new Mock<IPensionService>(); var person = new Person("test", 66); var calc = new PensionCalculator(mockPensionService.Object); calc.PayPensionContribution(person); mockPensionService.Verify(ps => ps.Pay(It.IsAny<decimal>()), Times.Never()); }
.AtMostOnce();を使用します。
実際のテストの後、メソッドを再度呼び出します。例外をスローする場合は、呼び出されました。