Трайт Illuminate\Foundation\Testing\RefreshDatabase не переносит вашу базу данных, если ваша схема актуальна . Вместо этого он выполнит тест только в рамках транзакции базы данных.
Я использую Laravel 10 и думаю, что он не работает должным образом в моем проекте.
Проблема №1
Поскольку для выполнения миграции проекта требуется около 1 млн (
Код: Выделить всё
php artisan migrate:fresh --env testing
Проблема №2
Мне нужно проверить, попадает ли фрагмент кода в ветку catch(Exception $e), и поскольку это фрагмент кода извлекает результаты из базы данных. Я думал изменить имя таблицы после всех настроек, чтобы она выдавала исключение, и это сработало.
Проблема то есть теперь каждый последующий тест в том же тестовом классе, который тестирует один и тот же фрагмент кода, завершается с ошибкой SQLSTATE[42S02]: базовая таблица или представление не найдено: это означает, что таблица все еще имеет новое неправильное имя, поэтому похоже, что это не единственный тест, который нужно обернуть в миграцию, а все тесты в одном тестовом классе, но это конфликтует с предыдущей операцией с базой данных (например, созданием экземпляров) и не влияет на последующие тесты.
Я действительно не могу понять, что не работает должным образом.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ransaction