繁体   English   中英

如何确定Rhino模拟中是否在bool值中调用了method?

[英]How to find out if method was called in a bool value in Rhino mocks?

我正在尝试使用NUnit和Rhino Mocks编写参数化的单元测试,根据是否调用了某种模拟方法,该测试可以返回true或false。 AssertWasCalled不正确,因为它会使测试立即失败。 我只想要bool值。

[Test]
[TestCase(1,2, Result=false)]
[TestCase(1,1, Result=true)]
public bool SomeTest(int a, int b)
{
    ...
    someObject.CheckValues(a, b); // logs something if values are different.

    return mockLogger.WasCalled(x => x.Log(null));
}

WasCalled ofc不存在。

在mockLogger上对Log方法进行存根,以在调用它时设置一个布尔值,并返回该布尔值:

bool logMethodWasCalled = false;
mockLogger
    .Stub(x => x.Log(Arg<string>.Is.Equal(null))
    .Do(new Action<string>(_ => logMethodWasCalled = true));

// Run test...

return logMethodWasCalled;

最好使用期望值:

mockLogger.Expect(x => x.Log(Arg<string>.Is.Anything));

mockLogger.VerifyAllExpectations();

如果要检查参数是否为空,请使用:

mockLogger.Expect(x => x.Log(Arg<string>.Is.Null));

另一种方法是使用:

triggerManagerMock.AssertWasCalled(x => x.Log(Arg<string>.Is.Anything));

在这种情况下,您可以使用Stub方法对行为建模并使用AssertWasCalled检查调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM