Rhino высмеивает ожидания от имен

Мой тестируемый объект имеет два объекта зависимостей одного типа. Иногда, когда тест имеет неудачное ожидание, неясно, какой объект зависимости задал это ожидание. Есть ли способ указать имена объектов зависимостей, которые будут отображаться в сообщениях об ошибках, чтобы я мог различать их?

Вот пример:

        MockRepository mocks = new MockRepository();
        var xAxis = mocks.StrictMock<IAxis>();
        var yAxis = mocks.StrictMock<IAxis>();
        Ball ball;

        using (mocks.Record())
        {
            Expect.Call(xAxis.Velocity).Return(100);
            Expect.Call(yAxis.Velocity).Return(0);
        }
        using (mocks.Playback())
        {
            ball = new Ball(xAxis, yAxis);
            ball.Bounce();
        }

Теперь, если что-то не так с кодом Bounce, я могу получить такое сообщение:

Rhino.Mocks.Exceptions.ExpectationViolationException : IAxis.get_Velocity(); Ожидаемый №1, Фактический №0.

Я не могу легко сказать, какая ось пропущена.


person Don Kirkby    schedule 17.12.2009    source источник


Ответы (1)


Я нашел решение, но это не совсем то, на что я надеялся. Вы можете добавить сообщение к каждому ожиданию. Мой пример становится:

        Expect.Call(xAxis.Velocity).Return(100).Message("x axis");
        Expect.Call(yAxis.Velocity).Return(0).Message("y axis");

И исключение теперь более описательное:

Rhino.Mocks.Exceptions.ExpectationViolationException : Сообщение: ось x IAxis.get_Velocity(); Ожидаемый №1, Фактический №0.

Единственным недостатком является то, что я должен добавить сообщение для каждого ожидания. Я надеялся просто назвать фиктивный объект, чтобы это имя отображалось во всех сообщениях.

person Don Kirkby    schedule 17.12.2009