Трайт 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