Архитектура межсервисных коммуникаций с использованием WCF, внедрения зависимостей и модульного тестирования - PullRequest
0 голосов
/ 24 апреля 2009

Я новичок в WCF и по большей части также распределенное программирование. Я работаю над проектом, который требует 4 отдельных услуги.

Я пытаюсь правильно определить обязанности для каждого компонента каждой услуги. Предположим, у меня есть служба B, которая должна взаимодействовать со службой A. Для каждой службы я определил класс реализации службы, узел службы и прокси-класс.

Чтобы выполнить модульное тестирование, я использую внедрение зависимостей - поскольку службе B необходимо связаться со службой A, я передал экземпляр прокси-класса A в качестве аргумента конструктора для службы B.

Когда я выполняю модульное тестирование службы B, у меня должен быть запущен и запущен сервисный хост A.

  1. Это неправильный способ внедрения зависимости? Если да, то почему и как вы порекомендуете мне это сделать?
  2. Есть ли лучший способ добиться внедрения зависимости?
  3. Нужно ли запускать служебный хост, чтобы получить правильные результаты в модульном тесте?

1 Ответ

1 голос
/ 24 апреля 2009

Рассмотрите возможность использования

  • ChannelFactory вместо сгенерированных клиентов.

    ChannelFactory<IHello> clientFactory = new ChannelFactory<IHello>("targetConfiguration");
    IHello client = clientFactory.CreateChannel();
    string result = client.SayHello();
    
  • Типы интерфейсов, где это возможно

  • одна из поддельных объектных структур ( пример ) для внедрения реализаций интерфейса при написании ваших тестов.

Относительно вашего третьего вопроса ответ «Нет», если ваша цель - тестирование отдельных небольших модулей (весь смысл модульного тестирования :). Но всегда лучше написать несколько интеграционных тестов, чтобы убедиться, что у вас нет проблем с сериализацией / хостингом.

...