Laravel: таблицы базы данных удалены после запуска теста phpunit

Каждый раз, когда я запускаю тест, все мои таблицы базы данных (кроме таблицы миграции) удаляются, и мне приходится снова запускать миграции. Например, если у меня есть следующие таблицы:

migrations
users
tableA
tableB

после запуска:

phpunit —filter user_can_view_a_record ViewRecordTest
Тесты / Feature / ViewRecordTest.php

мои таблицы удалены, и я получаю только таблицу миграции.

Я использую MySQL в качестве базы данных и в соответствии с настройкой, которую я настроил, тесты выполняются в памяти:

database.php

'connections' => [

'sqlite' => [
'driver' => 'sqlite',
//'database' => env('DB_DATABASE', database_path('database.sqlite')),
'database' => ':memory:',
'prefix' => '',
],

'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
'sticky' => true
],
]

phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"backupStaticAttributes="false"bootstrap="vendor/autoload.php"colors="true"convertErrorsToExceptions="true"convertNoticesToExceptions="true"convertWarningsToExceptions="true"processIsolation="false"stopOnFailure="false">
<testsuites>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>

<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="DB_CONNECTION" value="sqlite" />
<env name="DB_DATABASE" value=":memory:" />
</php>
</phpunit>

Спасибо

1

Решение

У меня есть решение, если вы используете phpStorm ищи тестовый фреймворк.

Файл >> Настройки >> Файл & Framework >> Тестовые рамки.

Установите файл конфигурации по умолчанию phpunit.xml в вашей корневой папке

1

Другие решения

решение Майкл Амейо хорошо работал для меня в PHPStorm! благодарю вас.
Я хотел бы отметить, что это может быть также проблема с кешем, так что попробуйте это:

php artisan config:clear
0

В общем, вы должны были разделить базу данных с такой же структурой таблиц, как и для env. Это нормальное поведение юнит-тестов (я имею в виду удаление таблиц).
Типичный поток для тестирования (для каждого выполнения теста):

  1. удалить все таблицы.
  2. Запустите все миграции (создайте таблицы, измените таблицы и т. Д.).
  3. Загрузить светильники
  4. Выполните тесты на новой базе данных.

Представьте себе ситуацию, когда один из тестов изменяет данные, например, в пользовательской таблице (изменение адреса электронной почты или имени и т. Д.), Если phpunit не удаляет все данные, и следующие тесты будут работать с неверными данными (измененными другим тестом).
Ты можешь проверить основная документация Больше подробностей.

-1
По вопросам рекламы [email protected]