Выведите 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() расширение.

Другие вопросы по тегам