IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

Как работает RefreshDatabase в тестах базы данных Laravel

При написание тестов базы данных в Laravel используется трейт RefreshDatabase.

С его помощью происходит сброс базу данных после каждого из ваших тестов, чтобы данные из предыдущего теста не мешали последующим тестам.

Если в тесте используется трейт RefreshDatabase,

то вызывается метод refreshDatabase() из трейта.

Происходит удаление всех таблиц базы данных. И отрабатывают все миграции.

Если в классе теста указать свойство $seeder,

то будет запущен соответствующий сидер (заполнитель/засеиватель) базы.

После этого стартует транзакция базы данных.

И регистрируется callback beforeApplicationDestroyed, в котором,  все стартовавший транзакции откатываются.

Этот обратный вызов выполнится в методе tearDown, вызываемом после каждого теста.

Откат гарантирует, что база данных не будет изменена тестом, и следующий тест может быть запущен на чистой базе данных.

Подробнее на английском: https://dev.to/daniel_werner/under-the-hood-how-refreshdatabase-works-in-laravel-tests-2728

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *