Я много читал об модульном тестировании платформы Entity Framework.Как провести тестирование Entitiy-Framework (EF) в моей бизнес-логике?
Я отправляю этот вопрос, потому что я просто видел, есть слишком много решения этой проблемы!
Вот решение я нашел:
- Используйте дорогой коммерческий инструмент под названием TypeMock (упомянутый here).
- Используйте альфа-инструмент с открытым исходным кодом под названием Effort (упомянутый here).
- Использование Образцовый шаблон и Rhino Mock. протестировать изолированные запросы LINQ к реальной базе данных (упомянуто here).
Некоторые проблемы с некоторыми из методов заявил здесь:
- Вы не можете обойти тот факт, что вам нужно, чтобы поставлять ObjectContext со строкой подключения
- Если вы подделать ObjectContext - некоторые вещи, которые могут работать в модульном тестировании, не будут работать в производстве (например, выполняемые функции внутри запросов)
Некоторые из статей, которые я читал, были 3-4 года назад.
Есть ли у кого-нибудь опыт в этом вопросе и может помочь мне найти лучшее решение?
Для того, чтобы все было ясно: мои бизнес-логические функции - это не просто простые функции, как «GetUserById».
Некоторые из функций включают в себя доступ к объектам, которые имеют отношения к другим объектам. (например, я могу добавить пользователя + отдел + офис в той же функции).
Я никогда не пользовался Rhino или MOQ. У вас есть образцы, которые могут помочь мне? Я не понимаю, как я должен отделить код LINQ от бизнес-логики. Где я помещаю «entity.SaveChanges»? в бизнес-логике? или в части, проверенной Rhino \ MOQ? что, если моя функция в BL имеет 2 обращения к базе данных - один для получения списка элементов и один для повторения каждого элемента и выполнения некоторых действий? –
и еще один вопрос - этот метод вы предлагаете поддерживать ленивую загрузку? Я не хочу, чтобы каждый вызов базы данных выполнял «.ToList()», потому что он мог бы принести огромные объемы данных из базы данных ... –
вам не нужно удалять linq, я бы посмотрел, используя шаблон Unit Of Work, вот пример: http://elegantcode.com.com/2009/12/15/entity-framework-ef4-generic-repository- и-unit-of-work-prototype /, он немного старше, но концепции все те же, вы помещаете свои репозитории в DAL, а затем вызываете их, хотя Unit Of Work –