Выбор ответа Middle Тестирование обновлено

EF Core InMemory в тестах

Вопрос

Почему провайдер EF Core InMemory не рекомендуют для тестов логики работы с базой?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Он не реляционный: нет транзакций и внешних ключей. InMemory не проверяет уникальность и внешние ключи как реляционная база, не поддерживает транзакции и сырой SQL, а сравнение строк в нём чувствительно к регистру иначе, чем в вашей СУБД.

Варианты ответа

  1. Он не реляционный: нет транзакций и внешних ключейправильный ответ
  2. Он слишком медленный для большого числа тестов
  3. Он удалён из EF Core 8 и больше не поддерживается
  4. Он не поддерживает LINQ-запросы с Where и Join

Разбор

InMemory не проверяет уникальность и внешние ключи как реляционная база, не поддерживает транзакции и сырой SQL, а сравнение строк в нём чувствительно к регистру иначе, чем в вашей СУБД. Документация EF Core прямо советует тестировать на настоящей базе (Testcontainers, локальный экземпляр) или на SQLite in-memory как компромиссе. Провайдер быстрый, существует, LINQ поддерживает.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме