如何在Moq中验证方法未被调用?

11 浏览
0 Comments

如何在Moq中验证方法未被调用?

如何验证在Moq中方法没有被调用?

它是否有类似AssertWasNotCalled的方法?

更新:从版本3.0开始,可以使用新的语法:

mock.Verify(foo => foo.Execute("ping"), Times.Never());

admin 更改状态以发布 2023年5月24日
0
0 Comments

更新:自从3版本开始,请查看上面问题的更新或Dann的下面回答。

要么,让你的模拟严格一些,这样它会在你调用没有预期结果的方法时失败

new Mock(MockBehavior.Strict)

或者,如果你想让你的模拟松散一些,使用.Throws( Exception )

var m = new Mock(MockBehavior.Loose);
m.Expect(a => a.moo()).Throws(new Exception("Shouldn't be called."));

0
0 Comments

在测试后使用Times.Never()选项运行验证。\n

_mock.Object.DoSomething()
_mock.Verify(service => service.ShouldntBeCalled(), Times.Never());

0