Локально и на bamboo у нас одна схема работы с БД:
Поднимаем контейнер с БД.
Раскатываем структуру и справочники миграциями. База раскатана и больше не перекатывается.
Перед каждым тестом чистим таблички и заполняем нужными данными с помощью DoctrineFixturesBundle. Каждый тест получается атомарным, друг на друга никак не влияют.
Мы его не используем, в нем не очень удобно персистить в базу связанные объекты, особенно если их много. И опять же все свойства для объектов нужно передавать через массив.
В случае DoctrineFixturesBundle получается более читабельный код.
Поскольку это высокоуровневые тесты, то мы проверяем логику работы с RabbitMQ/Kafka в рамках конкретных бизнес-процессов.
Как правило, это два сценария — на чтение и запись:
Положить валидное сообщение в очередь/топик, прочитать его. Или положить невалидное сообщение (без какого-то обязательного поля, просто мусор и т.д.), проверить как его обработает приложение.
Выполнить операцию внутри приложения, которая что-то пишет в очереди/топики, и проверить, что все сгененерировались корректно.
В случае DoctrineFixturesBundle получается более читабельный код.
Как правило, это два сценария — на чтение и запись: