Дразнить Microsoft DLL - PullRequest
       29

Дразнить Microsoft DLL

8 голосов
/ 15 марта 2011

У меня есть приложение, которое ссылается на Microsoft DLL (веб-службы Exchange). В моем модульном тестировании я хочу заменить Microsoft DLL на Mock.

Что работает с другими DLL, не работает с этой DLL, так как я получаю исключение

Определение манифеста обнаруженной сборки не соответствует ссылке на сборку

Я подтвердил, что у него такая же версия сборки, но я увидел, что Microsoft DLL подписана цифровой подписью, поэтому у нее есть PublicKeyToken. Может ли это быть тем, что ищет мое приложение? DLL с аналогичной подписью?

Есть ли способ ссылаться на DLL, не требуя ее publickeytoken?

Спасибо

1 Ответ

13 голосов
/ 15 марта 2011

Нельзя издеваться над подписанной DLL. (Если бы вы могли быть наняты мафией ...)

Макет кода, который обращается к коду в этой DLL.

Создайте фасад (если у вас его нет), который оборачивает доступ к методам в dll Exchange. Тогда в ваших тестах вы можете предоставить макет фасада.

Хорошей практикой проектирования является защита вашего кода от стороннего кода (сборок, веб-сервисов, элементов управления) с помощью фасадов / оболочек. Это сводит к минимуму риск воздействия в случае изменения стороннего кода, т.е. обновление до более новой версии dll (необходимые изменения коснутся только фасада) и помощь в тестировании.

...