犀牛.mock: AssertWasCalled可以在比较方法参数时使用自定义的IEqualityComparer吗?



我有以下代码片段:

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或现有的匹配器之一来创建自己的匹配器。

最新更新