Макет части EF DbContext с Moq и / или InMemoryDbSet - PullRequest
1 голос
/ 21 марта 2019

Этот вопрос НЕ о том, что здесь: Перемешивание EF DbContext с Moq и / или аналогичные вопросы. Я хорошо это знаю. Пожалуйста, прочитайте вопрос перед ответом. Спасибо.

  1. У нас есть довольно сложная база данных, в которой некоторые называют их «бизнес-объектами», а некоторые называют их «объектами данных». «Бизнес-объекты» обычно создаются или обновляются при каждом новом запросе пользователя, а «объекты данных» довольно стабильны, но могут иногда создаваться во время запроса пользователя, если отсутствуют при первом вызове.

  2. Я хочу создать интеграционные тесты в песочнице , где я мог бы вытащить объекты данных из реальной базы данных (потому что их слишком много, чтобы имитировать ) но контролируйте, что происходит с бизнес-объектами . Например, если у меня есть get or create рабочий процесс (с некоторой проверкой, конечно), то я хочу явно проверить, что весь рабочий процесс после тестирования отдельно get или create рабочих процессов в некоторых других тестах. Однако, если я тестирую get or create рабочий процесс, то на реальной БД я могу протестировать create часть рабочего процесса только один раз, но тогда я попаду только в get рабочий процесс (поскольку объект будет существовать после первого запуска теста). Добавьте, что многие тесты обычно выполняются параллельно, и результаты становятся непредсказуемыми.

Интересно, каков правильный подход для выполнения частичного"макета" контекста базы данных, где большинство таблиц будет получено из реальной БД, но для каждого теста может быть настроено несколько таблиц, например, в InMemoryDbSet с

Большое спасибо!

...