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. (Намного проще и быстрее)
Я смог заставить это работать, выполнив следующие действия:
- удалять
.env.testing
- Бежать
php artisan dusk
(Это создастphpunit.dusk.xml
). - Добавьте следующее в конец этого вновь созданного файла
<phpunit>
...
<php>
<server name="APP_ENV" value="local"/>
</php>
</phpunit>
- Теперь вы можете восстановить
.env.testing
который все еще можно использовать для тестирования phpunit.
ОРИГИНАЛЬНЫЙ ОТВЕТ
Я обнаружил, что если вы удалите
.env.testing
затем он использует
.env.dusk.local
. Кажется, что
.env.testing
всегда имеют приоритет.
Это не решает проблему использования отдельного.env для модульных тестов & dusk; что полезно при запуске модульных тестов в памяти и в сумерках с использованием sqlite.