假设我使用RhinoMock进行测试。我正在使用AAA aproach,所以它通常以
fooMock.AssertWasCalled(x=>x.Foo(bar))
如果断言失败,我通常会添加一行看起来像这样
fooMock.GetArgumentsForCallsMadeOn(x=>x.Foo(null)).PrintDump()
所以我可以看到在mock上调用了什么(它有帮助,因为通常问题是mock被错误的参数调用)。
有什么方法可以自动化这个过程吗?那么,如果断言失败,告诉RhinoMock打印调用是否在mock的方法上进行?
答案 0 :(得分:0)
似乎没有内置机制来为失败的断言转储参数。
我建议使用如下扩展方法:
public static void AssertWasCalledAndDump<T>(this T self, Action<T> action)
{
try
{
self.AssertWasCalled(action);
}
catch (Rhino.Mocks.Exceptions.ExpectationViolationException)
{
self
.GetArgumentsForCallsMadeOn(action, options => options.IgnoreArguments())
.PrintDump();
throw;
}
}
然后在代码中你可以写:
fooMock.AssertWasCalledAndDump(x=>x.Foo(bar));
<强> PS 强>
我假设您已经实现了PrintDump()
扩展名。