我试图用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。"
GenerateStub<T>
返回的对象不记录属性和方法调用。如果您想断言是否调用了setter、getter或方法,请使用GenerateMock<T>
。
// Replace
var mock = MockRepository.GenerateStub<IMyInterface>();
// with
var mock = MockRepository.GenerateMock<IMyInterface>();
// and everything should work again.