我有以下代码片段:
Action<IProbingErrorHandler> handlerAction = x => x.Post(sourceContext, channelId, probingError);
var handler = MockRepository.GenerateStub<IProbingErrorHandler>();
handler.Stub(handlerAction);
...
handler.AssertWasCalled(handlerAction);
不幸的是,为了使最后一个断言工作,我必须在参数类型中实现Equals方法。是否有一种方法来使用自定义的IEqualityComparer实现代替?
尝试使用自定义参数约束。你可以这样写:
handler
.Stub(x => x.Post(Arg<string>.Matches(s => ...), ..., ...))
.Return(something);
查看Rhino Mocks约束参考,了解一些内置匹配器。如果这些都不能满足您的需要,您可以通过子类化AbstractConstraint
或现有的匹配器之一来创建自己的匹配器。