EF4 - возможно ли смоделировать ObjectContext для модульного тестирования? - PullRequest
7 голосов
/ 24 апреля 2010

Можно ли это сделать без использования TypeMock Islolator? Я нашел несколько предложений в Интернете, таких как передача строки соединения только с метаданными, однако, ничего такого, с чем я сталкивался, кроме TypeMock, по-видимому, действительно допускает фиктивный ObjectContext, который можно внедрить в сервисы для модульного тестирования. Должен ли я положить $$ для TypeMock, или есть альтернативы? Разве никому не удавалось создать что-то похожее на TypeMock с открытым исходным кодом?

Ответы [ 4 ]

4 голосов
/ 21 мая 2010

Я тестирую EF4 легко, без насмешек. Я создал интерфейс репозитория, используя в качестве основы код http://elegantcode.com/2009/12/15/entity-framework-ef4-generic-repository-and-unit-of-work-prototype/. Затем я создал класс InMemoryRepository<T>, который использовал интерфейс IRepository. Затем я заменил IObjectSet<T> на List<T> внутри класса и соответственно изменил методы поиска.

Таким образом, если вам нужно выполнить модульное тестирование, передайте InMemoryRepository, а не DataRepository.

3 голосов
/ 18 ноября 2010

Поместите ваш запрос Linq2Entity за интерфейсом, протестируйте его отдельно от реальной базы данных.

Написание тестов для вашей бизнес-логики с макетами для ваших интерфейсов запросов. Не позволяйте Linq кровоточить в вашей бизнес-логике!

Не используйте RepositoryPattern!

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

Обернуть ObjectContext в прокси-класс. Затем добавьте это в ваши классы.

0 голосов
/ 10 июля 2012

Я не думаю, что шаблон репозитория является единственным ответом на вопрос (конечно, он устраняет проблему)

Мне понравился этот ответ - я считаю более подходящим для введения тестов в существующую кодовую базу Создание интерфейса для ObjectContext

...