Тестируют ли репозитории в интеграционных тестах?

В Symfony репозитории, относящиеся к базе данных, обычно тестируются в интеграционных тестах. В этом случае интеграционные тесты обычно выполняют следующие действия:

1. Установка и настройка тестовой базы данных: перед запуском тестов необходимо убедиться, что тестовая база данных настроена и готова к использованию. Для этого может понадобиться создать отдельную базу данных, заполнить ее тестовыми данными и выполнить миграции, если они применяются.

2. Инжекция репозиториев: в интеграционных тестах репозитории обычно инжектируются в тестируемый класс, так, чтобы иметь доступ к методам репозиториев и с их помощью проводить операции с базой данных. Для этого часто используют Dependency Injection в Symfony.

3. Выполнение операций с базой данных: после инжекции репозиториев тесты могут использовать методы репозиториев для выполнения операций с базой данных, таких как создание, чтение, обновление и удаление данных. Например, для тестирования функционала чтения данных, можно использовать методы like findBy(), findOneBy() или findAll().

4. Проверка результатов: после выполнения операций с базой данных, интеграционные тесты обычно проверяют, что ожидаемые результаты соответствуют фактическим. Это может быть проверка количества полученных записей, проверка содержания полей данных или проверка корректности результатов запросов.

Итак, интеграционные тесты выполняются на уровне всего приложения и обеспечивают проверку, что репозитории корректно работают с базой данных в рамках определенных сценариев использования. Такие тесты помогают обнаружить и исправить возможные проблемы при работе с базой данных, такие как неправильно написанные запросы или некорректная обработка результатов запросов.