Выведите GetArgumentsForCallsMadeOne, если не удалось подтвердить в RhinoMock
Допустим, у меня есть тест с использованием RhinoMock. Я использую подход AAA, поэтому обычно он заканчиваетсяfooMock.AssertWasCalled(x=>x.Foo(bar))
Если утверждение не удалось, я обычно добавляю строку, похожую на этуfooMock.GetArgumentsForCallsMadeOn(x=>x.Foo(null)).PrintDump()
так что я могу видеть, какие вызовы были сделаны в mock (это помогает, потому что обычно проблема в том, что mock вызывается с неправильными аргументами).
Есть ли способ, которым я могу автоматизировать процесс? Итак, скажите RhinoMock распечатать вызовы, сделанные по методу mock, если утверждение не удалось?
1 ответ
Кажется, что нет встроенного механизма для сброса аргументов за ошибочные утверждения.
Я бы предложил использовать метод расширения, подобный следующему:
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()
расширение.