如果断言在RhinoMock中失败,则打印GetArgumentsForCallsMadeOne
本文关键字:打印 GetArgumentsForCallsMadeOne 失败 断言 RhinoMock 如果 | 更新日期: 2023-09-27 18:22:01
假设我有一个使用RhinoMock的测试。我用的是AAA的方式,所以它通常以fooMock.AssertWasCalled(x=>x.Foo(bar))
如果断言失败,我通常会添加一行,如下所示fooMock.GetArgumentsForCallsMadeOn(x=>x.Foo(null)).PrintDump()
所以我可以看到对mock进行了哪些调用(这很有帮助,因为通常问题是用错误的参数调用mock)。
有什么方法可以让这个过程自动化吗?那么,如果断言失败,告诉RhinoMock打印对mock方法的调用?
似乎没有为失败断言转储参数的内置机制。
我建议使用如下扩展方法:
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()
扩展。