Как изменить поведение тупиков?

Я понимаю, что это из-за недавних изменений в политике GDPR и ICANN.

https://motherboard.vice.com/en_us/article/vbpgga/whois-gdpr-europe-icann-registrar

18
задан BartoszKP 23 December 2014 в 20:48
поделиться

1 ответ

ПРЕДУПРЕЖДЕНИЕ

Изменение поведения тупиков является запахом кода!

Это обычно указывает, что Ваши модульные тесты являются слишком сложными, являются твердыми понять и являются хрупкими, повреждаясь легко на корректных изменениях класса под тестом.

Выезд:

  • [xUnit Тестовые Шаблоны] [1]
  • [Искусство Поблочного тестирования] [2]

Так: только использование это решение, если Вы не можете избежать его . В моих глазах эта статья граничит с плохим советом - однако существуют редкие ситуации, где Вам действительно нужен он.

<час>

А-ч, я изобразил его сам. Носорог поддерживает режим записи/воспроизведения. В то время как синтаксис AAA всегда сохраняет объекты в режиме воспроизведения, мы можем переключиться на запись и назад воспроизводить только для очистки поведения тупика.

Это смотрит немного hackish, однако...

    public interface IFoo { string GetBar(); }
    [TestMethod]
    public void TestRhino()
    {
        var fi = MockRepository.GenerateStub<IFoo>();
        fi.Stub(x => x.GetBar()).Return("A");
        Assert.AreEqual("A", fi.GetBar());

        // Switch to record to clear behaviour and then back to replay
        fi.BackToRecord(BackToRecordOptions.All);
        fi.Replay();

        fi.Stub(x => x.GetBar()).Return("B");
        Assert.AreEqual("B", fi.GetBar());
    }

Обновление:

я буду использовать это в будущем, таким образом, вещи будут выглядеть немного более хорошими:

internal static class MockExtension {
    public static void ClearBehavior<T>(this T fi)
    {
        // Switch back to record and then to replay - that 
        // clears all behaviour and we can program new behavior.
        // Record/Replay do not occur otherwise in our tests, that another method of
        // using Rhino Mocks.

        fi.BackToRecord(BackToRecordOptions.All);
        fi.Replay();
    }
}
27
ответ дан 30 November 2019 в 08:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: