如何查明方法是否在Rhino mocks中的布尔值中被调用

本文关键字:布尔值 调用 mocks Rhino 何查明 方法 是否 | 更新日期: 2023-09-27 18:19:34

我正试图使用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不存在。

如何查明方法是否在Rhino mocks中的布尔值中被调用

在mockLogger上Stub Log方法,以便在调用时设置bool,并返回:

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来检查调用。