Могу ли я установить удобное сообщение, которое будет отображаться при сбое AssertWasCalled в Rhino Mocks? - PullRequest
2 голосов
/ 28 декабря 2011

Могу ли я написать следующее утверждение на фиктивном объекте так, чтобы оно показывало: «UnBookFlight не был вызван с правильными параметрами или даже не вызван» в случае сбоя подтверждения?

mockBookingService
              .AssertWasCalled(ms=>ms.UnBookFlight(Arg<DateTime>.Is.Equal(dummyDate)));

Ответы [ 2 ]

3 голосов
/ 28 декабря 2011

Согласно этой статье , вы можете указать сообщение в параметрах метода, переданных в AssertWasCalled():

mockBookingService.AssertWasCalled(
    ms => ms.UnBookFlight(Arg<DateTime>.Is.Equal(dummyDate)),
    options => {
        options.Message("UnBookFlight was not called with proper parameters or not even called");
    });
0 голосов
/ 28 декабря 2011

Насколько я знаю, у Rhino нет способа указать свои собственные сообщения.

Вы можете написать свой собственный метод, который перехватывает исключение Rhino ExpectationViolationException, а затем распечатывает нужное сообщение.

Грубый пример этого будет:

public static class RhinoExtensions
{
    public static void AssertWasCalledWithMessage<T>(this T mock, Expression<Func<T, object>> action)
    {
        try
        {
            mock.AssertWasCalled(action.Compile());
        }
        catch (ExpectationViolationException)
        {
            Console.WriteLine(string.Format("{0} was not called with proper parameters or was not called.", (action.Body as MethodCallExpression).Method.Name));
            throw;
        }
    }
}

Тогда использование будет:

mockBookingService.AssertWasCalledWithMessage(ms=>ms.UnBookFlight(Arg<DateTime>.Is.Equal(dummyDate)));
...