Rhino Mocks忽略私有方法

时间:2012-02-08 02:01:05

标签: c# rhino-mocks

我有一个名为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));

2 个答案:

答案 0 :(得分:2)

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

如果你有钱花钱,有商业模拟工具可以让非虚拟成员被嘲笑。我没有任何经验,所以我不会提到任何名字。

答案 1 :(得分:0)

“如果你有钱花钱,那么有商业模拟工具可以让非虚拟成员被嘲笑。”,Telerik只是模拟是一个很棒的模拟框架。值得付钱!