RhinoMocks:AssertWasCalled在Stub上不起作用

Fre*_*ool 2 c# unit-testing assert rhino-mocks rhino-mocks-3.5

我试图用RhinoMocks声明某个属性设置器被调用.但它没有按预期工作.

以下简化示例说明了该问题.

考虑这个界面:

public interface IMyInterface
{
    string SomeProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在考虑以下代码:

var mock = MockRepository.GenerateStub<IMyInterface>();
mock.SomeProperty = "abc";

mock.AssertWasCalled(x => x.SomeProperty = Arg<string>.Is.Anything);
Run Code Online (Sandbox Code Playgroud)

我期待最后一行的断言会毫无问题地通过.但是,它正在抛出ExpectationViolationException这条消息:

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

我不明白为什么会发生这种情况.有人可以帮忙吗?

Den*_*aub 7

返回的对象GenerateStub<T>不记录属性和方法调用.如果要声明是否已调用setter,getter或方法,请GenerateMock<T>改用.

// Replace
var mock = MockRepository.GenerateStub<IMyInterface>();

// with
var mock = MockRepository.GenerateMock<IMyInterface>();

// and everything should work again.
Run Code Online (Sandbox Code Playgroud)