我有模拟工作,我测试我的模拟对象上的方法使用正确的参数调用,并返回正确的结果 .
现在我想检查另一个条件 . 在这种情况下,应该对模拟对象运行NO方法 . 如何在单元测试中表达这一点?
两种最直接的方法是使用MockBehaviour.Strict:
var moqFoo = new Mock<IFoo>(MockBehaviour.Strict); //any calls to methods that there aren't expectations set for will cause exceptions
或者您总是可以使用回调并从那里抛出异常(如果有一个特定的方法不应该被调用 .
var moqFoo = new Mock<IFoo>(MockBehaviour.Loose); moqFoo.Expect(f => f.Bar()).Callback(throw new ThisShouldNotBeCalledException());
你可以创建你的模拟严格 . 这样,只允许运行您设置的方法(或Expect,具体取决于您正在使用的Moq版本) .
var foo = new Mock<IFoo>(MockBehavior.Strict); foo.Expect(f => f.Bar());
每当在除了Bar()之外的foo上调用方法时,都会引发异常并且您的测试将失败 .
2 回答
两种最直接的方法是使用MockBehaviour.Strict:
或者您总是可以使用回调并从那里抛出异常(如果有一个特定的方法不应该被调用 .
你可以创建你的模拟严格 . 这样,只允许运行您设置的方法(或Expect,具体取决于您正在使用的Moq版本) .
每当在除了Bar()之外的foo上调用方法时,都会引发异常并且您的测试将失败 .