Answers:
更新:从版本3开始,请检查上面问题的更新或下面丹恩的答案。
要么将模拟严格,否则如果调用没有期望的方法,模拟将失败
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."));
被盗:约翰·福斯特(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();
经过真正的测试后,再次调用该方法。如果引发异常,则将其调用。