【问题标题】:Rhino Mocks ignore private methodRhino Mocks 忽略私有方法
【发布时间】:2013-10-30 15:27:28
【问题描述】:

我有一个类,其中包含一个名为 Validate 的方法,我想使用 Rhino Mocks 对其进行测试。 Validate 方法调用一个静态类,该类依次访问 SQL 数据库。

我想告诉 rhino mocks 在执行测试时忽略对静态类的调用。 在调试静态类下面的代码时,仍然会调用静态类并尝试访问数据库,而我只想返回“错误消息文本”。

var mock = MockRepository.GenerateMock<DataUpdateTaskExecutor>();

string resourceName;
Expect.Call(SqlResourceHelper.GetString(resourceName)).IgnoreArguments().Return("error messaage text");

IList<string> errors;
Assert.AreEqual(false,mock.Validate(out errors));

【问题讨论】:

  • 如果你不能把它包装在一个界面中,你就没有很多其他的选择了。可能是零选项,但这对我来说有点绝对。

标签: c# rhino-mocks


【解决方案1】:

Rhino.Mocks(以及大多数其他免费的模拟框架,如 moq)不能模拟非虚拟成员。正如@Joe Tuskan 所说,您应该将功能包装在接口中并将接口注入构造函数中,或者使其成为可以模拟的非静态方法。

如果您有钱可以花钱,可以使用商业模拟工具来模拟非虚拟成员。我对他们中的任何一个都没有任何经验,所以我不会点名。

【讨论】:

  • “如果你有钱可以花钱,可以使用商业模拟工具来模拟非虚拟成员。” --- 哦,所以你需要花钱让你的测试更脆弱。太棒了!
【解决方案2】:

“如果你有钱可以花钱,有商业模拟工具可以模拟非虚拟成员。”,Telerik just mock 是一个很棒的模拟框架。值得付出!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    相关资源
    最近更新 更多