Rhino издевается над синтаксисом воспроизведения записи

Помогите, может ли кто-нибудь помочь и объяснить назначение прицела Rhino Mocks 'Record'?

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

Вот пример, который у меня есть:

    private static void SomeTest()
    {
        MockRepository mockRepository = new MockRepository();
        ISomeInterface test = mockRepository.StrictMock<ISomeInterface>();

        test.Bar();

        using (mockRepository.Record())
        {
            Expect.Call<string>(test.GetFoo()).Return("Hello");
        }

        using (mockRepository.Playback()) 
        {
           test.GetFoo();
        }
    }

    public interface ISomeInterface
    {
        string GetFoo();
        void Bar();
    }

Этот тест завершится неудачно, поскольку ожидается, что должен быть вызван Bar. Это потому, что я создал StrictMock, а не Dynamic?


person Community    schedule 23.05.2009    source источник


Ответы (1)


Этот тест завершится неудачно, потому что нет ожиданий, что Bar () будет вызван, но он был вызван.

Отвечая на ваш вопрос, да, это потому, что у вас есть строгая насмешка. Если вы перейдете на DynamicMock, он проигнорирует все, кроме установленных вами ожиданий. Я настоятельно рекомендую использовать DynamicMocks везде, где это возможно, поскольку StrictMocks на самом деле довольно хрупкие и, как правило, доставляют много хлопот.

Что касается записи / воспроизведения, то он не переходит в режим записи автоматически, если вы используете конкретный MockRepository. Это просто природа StrictMock, которая ищет все, что вызывается, что выходит за рамки ожиданий, независимо от того, когда.

person womp    schedule 23.05.2009
comment
Спасибо за помощь. Теперь я понимаю. - person ; 24.05.2009