Microsoft издевается над SqlConnection для тестирования интеграции
У меня есть различные веб-сервисы, которые общаются друг с другом, иногда делают вызовы из базы данных, а некоторые - с очередью сообщений, но я хотел бы иметь возможность тестировать сервисы, взаимодействующие друг с другом, без фактического вызова в базе данных.
Есть ли способ, с помощью которого я могу проводить интеграционные тесты, фактически не затрагивая внешние конечности системы, то есть базы данных и очереди сообщений.
Наши веб-сервисы и база данных не написаны с учетом DI или тестируемости, поэтому создание поддельных реализаций в сервисах на самом деле не вариант. Я видел библиотеку Microsoft Mocks, которая создает поддельные версии сборки и выглядит многообещающе.
Есть ли способ добиться этого с помощью подделок Microsoft? Можем ли мы каким-то образом заставить службу совершать вызовы на поддельный SqlConnection и высмеивать вызовы базы данных?
1 ответ
Если у вас нет способа использовать внедрение зависимостей, вы можете попытаться смоделировать некоторые компоненты вашего уровня БД
Я предлагаю взглянуть на шаблон хранилища
http://www.codeproject.com/Articles/526874/Repositorypluspattern-2cplusdoneplusright
И попробуйте разделить и абстрагировать всю модель БД, чтобы после этого вы могли смоделировать все эти классы с помощью некоторой фреймворковой инфраструктуры, например RhinoMocks