【发布时间】:2011-01-24 04:29:36
【问题描述】:
Rhino Mocks 存根和模拟仅适用于接口,而不适用于具体类,这对吗?我花了很长时间试图让这段代码正常工作。我没想到存根的 pubSubClient 总是从类中调用 Send 方法。该方法有一些依赖并抛出异常。
[Test]
public void Test01()
{
PubSubMessage psm = new PubSubMessage();
var pubSubClient = MockRepository.GenerateStub<PubSubClient>();
pubSubClient.Stub(x => x.Send(psm)).IgnoreArguments().Return(null);
// actual PubSubClient Send method throws exception
// the rest of the test is skipped...
}
但是,当我提取接口并使用 IPubSubClient 运行相同的测试时,它似乎按预期工作。
这是否意味着我必须为我想用 Rhino 模拟/存根的每个类提取接口?还是我在技术上或概念上遗漏了什么?
更新:好的,看来我知道我遗漏了哪一部分: Rhino Mocks 无法拦截对非虚拟方法的调用。所以,我想我要么使用接口,要么使具体类上的每个方法都是虚拟的。如果还有其他选择,请纠正我。
【问题讨论】:
标签: .net unit-testing mocking rhino-mocks stubbing