#c# #wcf #unit-testing #mocking
#c# #wcf #модульное тестирование #издевательство
Вопрос:
У меня есть служба Ria WCF, которая вызывает несколько служб wcf (не Ria). Я использую ChannelFactory для создания каналов, но проблема в том, что я хочу написать модульные тесты для этого сервиса Ria, а ChannelFactory — это класс, а не интерфейс, поэтому я не могу издеваться над ним. Идеальным решением было бы объявить IChannelFactory и использовать внедрение зависимостей, но здесь есть проблема.
ChannelFactory перегружен CreateChannel, который принимает имя конфигурации конечной точки, определенное в файле web / app.config. Я использую этот метод, таким образом, мне не нужно жестко кодировать параметры конечной точки или создавать дополнительные свойства конфигурации, чтобы изобретать велосипед. В IChannelFactory нет этого участника, поэтому, даже когда я внедряю ChannelFactory в свой сервис, я не могу создать канал, настроенный из файла конфигурации. Итак, мой вопрос в том, как обойти эту проблему? Я имею в виду, как создать канал и настроить его из файла конфигурации, используя контракт IChannelFactory без отражения / динамического?
Ответ №1:
Что ж, я нашел решение, создав свой собственный IChannelFactory. Одна из его реализаций основана на ChannelFactory, а другая — издевательская 🙂