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 无法拦截对非虚拟方法的调用。所以,我想我要么使用接口,要么使具体类上的每个方法都是虚拟的。如果还有其他选择,请纠正我。