如何验证Moq中没有调用该方法?
如何验证Moq中没有调用该方法?
它是否有像AssertWasNotCalled?
更新:从版本3.0开始,可以使用新的语法:
mock.Verify(foo => foo.Execute("ping"), Times.Never());
更新 :从版本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());
从John Foster对这个问题的回答中“偷走了解Moq需要帮助”
您可能想要测试的一件事是,当65岁以上的人被传入方法时,薪酬方法不会被调用
[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());
}
链接地址: http://www.djcxy.com/p/35333.html
上一篇: How to verify that method was NOT called in Moq?
下一篇: Global static variable not "staying defined" outside of function