Laravel Dusk игнорирует.env.dusk и.env.dusk.local (Используя Valet и Laravel 5.5)

Я пытаюсь запустить Laravel Dusk, и мне нужно использовать тестовую базу данных. Когда я проверяю скриншот, он говорит, что база данных не существует. Проблема в том, что база данных определена в.env, а не в.env.dusk... Я попытался переименовать файл в.env.dusk.local, но все равно не повезло. Что я делаю неправильно?

4 ответа

Та же проблема ... Проблема в том, что вы забыли создать файл кеша конфигурации для вашей тестовой среды, поэтому сумерки вместо этого будут использовать ваш текущий локальный файл кеша конфигурации. Вот исправление:

1/ дубликат.envк.env.dusk.testingи отредактируйте следующее:

      APP_ENV=testing

DB_DATABASE=halfwish_test #I use different MYSQL database for testing.

2/запустите этот cmd:

      $ php artisan config:cache --env=dusk.testing && php artisan clear //clear compiled services and packages files and cache config file.
$ php artisan migrate:fresh --env=dusk.testing && php artisan seed --env=dusk.testing //this is migrating and seeding demo data to DB.

Теперь вы можете бежатьphp artisan dusk.

Попробуйте очистить кеш? Я помню подобные проблемы, когда я впервые начал использовать сумерки.

php artisan cache:clear

У меня та же проблема. В последнее время я понял, что файл.env кэшируется до начала сумерек.

Я решил это, добавив

$this->artisan('config:cache');

в функцию createApplication() в CreateApplication.php. Оно работает:)

Но тогда, если я закончил испытание в сумерках, я должен бежать

php artisan config:cache

чтобы запустить исходный сервер.

Редактировать:

позже я попытался просто позвонить

php artisan config:clear

также запретите приложению кэшировать переменную env. (Намного проще и быстрее)

Я смог заставить это работать, выполнив следующие действия:

  1. удалять .env.testing
  2. Бежать php artisan dusk (Это создаст phpunit.dusk.xml).
  3. Добавьте следующее в конец этого вновь созданного файла
<phpunit>
    ...

    <php>
        <server name="APP_ENV" value="local"/>
    </php>
</phpunit>
  1. Теперь вы можете восстановить .env.testing который все еще можно использовать для тестирования phpunit.

ОРИГИНАЛЬНЫЙ ОТВЕТ

Я обнаружил, что если вы удалите .env.testing затем он использует .env.dusk.local. Кажется, что .env.testing всегда имеют приоритет.

Это не решает проблему использования отдельного.env для модульных тестов & dusk; что полезно при запуске модульных тестов в памяти и в сумерках с использованием sqlite.

Другие вопросы по тегам