c# - 犀牛模拟 : AssertWasCalled doesn't work on Stub

标签 c# unit-testing rhino-mocks assert rhino-mocks-3.5

我正在尝试使用 RhinoMocks 断言调用了某个属性 setter 。但它没有按预期工作。

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

考虑这个接口(interface):

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(anything); Expected #1, Actual #0."

我不明白为什么会这样。有人可以帮忙吗?

最佳答案

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

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

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

// and everything should work again.

关于c# - 犀牛模拟 : AssertWasCalled doesn't work on Stub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8700711/

相关文章:

c# - Rhino Mock stub 返回与预期不同的类型并破坏了我的单元测试

c# - 在 Windows Phone 8.1 中暂停应用程序时工作

JavaScript 单元测试 : How to test a Jquery Submit() in a click function?

python - 重载 unittest.testcase 的 __init__

unit-testing - Grails Controller 单元测试不会将页面呈现为 response.text

c# - Rhino mock 原始方法调用已过时

rhino-mocks - Rhinomocks,如何验证从未调用过 stub /模拟?

C# 后台 worker 不会在我自己以外的任何电脑上触发 dowork 事件

c# - 在 SqlBulkCopy 期间更改值

c# - 如何在 View 页面上显示捕获异常消息?