0

我正在尝试使用 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));
}

WasCalledofc 不存在。

4

2 回答 2

1

在 mockLogger 上存根 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;
于 2013-06-21T13:07:47.763 回答
0

最好使用期望:

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

于 2013-06-26T08:43:45.357 回答