Вот простой сценарий, чтобы объяснить, что я пытаюсь сделать.Скажем, я создаю движок блогов, и у меня есть 2 сущности, Post
и Comment
, с отношением «один ко многим» между ними.На моем сервисном уровне у меня есть логика запросов для получения сведений о публикации, которая выглядит следующим образом:
Post post = new PostByIdQuery(_unitOfWork).WithPostId(5).Execute();
Эта строка кода выполнит запрос, который будет извлекать сущность сообщения из базы данных с идентификаторомзначение 5. Этот объект запроса уже закодирован и проходит интеграционные тесты с использованием реальной базы данных.
Существует два бизнес-процесса, в которых мне может потребоваться получить сообщение по указанному идентификатору, если я редактирую сообщениеили когда я показываю сообщение с его комментариями.Этот объект запроса отлично работает для обоих сценариев, но при отображении поста с комментариями это влияет на производительность, поскольку список комментариев по умолчанию загружается с отложенной загрузкой.Таким образом, итерация комментариев к сообщению вызовет несколько обращений к базе данных.
Конечно, если я всегда стремлюсь загрузить комментарии к сообщению, если я просто редактирую сообщение, это вызывает ненужные объединения таблиц.
Таким образом, я хочу добавить новый метод в свободный интерфейс, который будет определять, следует ли загружать комментарии с отложенной загрузкой или нет. Вопрос в том, как написать интеграционный тест, который проверяет, загружена ли таблица комментариев с нетерпением илине так ли это новое требование может быть проверено всякий раз, когда выполняются модульные / интеграционные тесты?
Насколько я могу судить, свойство Post.Comments
будет отображать то же самое при обращении к нему, независимо от того, загружено оно или загружено лениво,Я не уверен, как создать тест для этого.
Редактировать: В качестве FYI, это использует механизм Code-First EF4, таким образом, мои объекты являются POCO.