Я запоздало пишу некоторые тесты функций PHPUnit для проекта.Один из них затрагивает несколько маршрутов, которые изменяют базу данных - и до сих пор я использовал транзакции базы данных на некоторых из этих маршрутов.
Если я использую черту RefreshDatabase
или DatabaseTransactions
вмой тест проваливается со странной ошибкой:
Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [App\Models\ClassM]
Если я удаляю признаки (чтобы данные сохранялись), тест проходит успешно.
Я прошел и удалил всю свою базу данныхтранзакции от соответствующих маршрутов, и тест теперь проходит с RefreshDatabase
.
Я подозреваю, что проблема в том, что MySQL не поддерживает вложенные транзакции, и обе черты используют транзакции,Но это означало бы, что если я хочу запустить тесты с RefreshDatabase
(безусловно, лучший вариант!), Я вообще не могу использовать транзакции в своем коде.
Это правильно?Это кажется серьезным ограничением.