RhinoMocks: AssertWasCalled不能在Stub上工作

本文关键字:Stub 工作 不能 AssertWasCalled RhinoMocks | 更新日期: 2023-09-27 18:19:17

我试图用RhinoMocks断言某个属性setter被调用。但是它没有像预期的那样工作。

下面的简化示例说明了这个问题。

考虑这个接口:

public interface IMyInterface
{
    string SomeProperty { get; set; }
}

现在考虑下面的代码:

var mock = MockRepository.GenerateStub<IMyInterface>();
mock.SomeProperty = "abc";
mock.AssertWasCalled(x => x.SomeProperty = Arg<string>.Is.Anything);

我原以为最后一行的断言会毫无问题地通过。然而,它抛出了一个ExpectationViolationException,带有以下消息:

" IMyInterface.set_SomeProperty(东西);预期#1,实际#0。"

我不明白为什么会发生这种事。有人能帮忙吗?

RhinoMocks: AssertWasCalled不能在Stub上工作

GenerateStub<T>返回的对象不记录属性和方法调用。如果您想断言是否调用了setter、getter或方法,请使用GenerateMock<T>

// Replace
var mock = MockRepository.GenerateStub<IMyInterface>();
// with
var mock = MockRepository.GenerateMock<IMyInterface>();
// and everything should work again.