Лучший способ макетировать внешние веб-сервисы при тестировании веб-приложения в разработке - PullRequest
2 голосов
/ 10 мая 2010

В настоящее время я работаю над приложением, которое зависит от множества внешних веб-сервисов. Некоторые из них authorize.net и chargify .

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

    For<IChargifyService>().Use<MockChargifyService>(); //uncomment this line to use a mock chargify service

У меня есть похожие строки в реестре для других поддельных сервисов. Я комментирую их при развертывании, чтобы реальные сервисы использовались в производстве. Реальные и поддельные сервисные реализации присутствуют в сборке Infrastructure.

Проблема этого подхода заключается в том, что я должен запомнить , чтобы раскомментировать строки перед развертыванием. Я знаю, что есть способ сделать это с помощью Structure Xml Config, но мне было интересно, есть ли лучший способ сделать это. Будет ли хорошая идея создать Mock Infrastructure сборку?

Ответы [ 2 ]

1 голос
/ 11 мая 2010

Я могу придумать несколько способов:

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

Scan(x =>
{
    x.TheCallingAssembly();
    x.AssembliesFromApplicationBaseDirectory();
    x.LookForRegistries();
});

2) Другой вариант - создать профиль для ваших макетов:

Profile("Test", x =>
{
    x.For<IChargifyService>().Use<MockChargifyService>();
    // etc.
});

Тогда где-то в вашем приложении вы бы назвали:

ObjectFactory.Profile = "Test";

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

0 голосов
/ 10 мая 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...