Intereting Posts
Сервер WAMP не работает Солить с хешированной версией пароля пользователя так же безопасно, как солить с заранее определенной строкой? Как получить последнее значение автоматического прироста в качестве внешнего ключа для другой таблицы в php Прикрепление категорий из одной таблицы к записи в другой MySQL Ошибка Codeigniter «Не удается подключиться к серверу базы данных с помощью предоставленных настроек» Любая функция PHP, которая лишает свойства объекта, которые являются нулевыми? Какова правильная настройка PHP для подключения к MS SQL 2000/2005? Как отформатировать дату в PHP без двоеточия в смещении? сохранение данных формы в базе данных Всего строк PHP_Count во всех файлах в данной папке Разделение числа на случайные неравные части Как изменить, где PHP ищет пользователя, включает? PHP array_multisort – как сохранить значения ключа? PHP Mailer скрипт не завершается после вызова ajax и формы submit Как проверить, является ли метод статическим в PHP?

Laravel dusk не работает .env.dusk.local

У меня есть приложение, и я хочу использовать Laravel Dusk.

Я создал файл с именем .env.dusk.local с базой данных для тестов и файлом с именем .env с моей базой данных по умолчанию.

Я запустил команду php artisan и создал пользователя с помощью /register .

После того, как я создал тест входа в систему с тем же адресом электронной почты, но с другим паролем, это не будет проблемой, потому что в .env.dusk.local это будет другой банк и не будет зарегистрирован ни у кого.

Но когда я запускаю команду php artisan dusk, она берет информацию из оригинала .env и заканчивает стирание всех записей из моей базы данных по умолчанию.

Я хотел бы знать, как загрузить информацию из моего .env.dusk.local и использовать тестовую базу данных.

.env default

 APP_ENV=local APP_KEY=base64:K8otIkxJk0rFsZYSEq1hwBuaxQX3QI3Bb7ZmemJRIWg= APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://localhost:8000 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_dusk DB_USERNAME=root DB_PASSWORD=123456 

.env.dusk.local

 APP_ENV=local APP_KEY=base64:K8otIkxJk0rFsZYSEq1hwBuaxQX3QI3Bb7ZmemJRIWg= APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://localhost:8000 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_dusk_test DB_USERNAME=root DB_PASSWORD=123456 

Функция Mu для testLogin

 namespace Tests\Browser; use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Support\Facades\App; use Tests\DuskTestCase; class LoginTest extends DuskTestCase { use DatabaseMigrations; /** * A Dusk test example. * * @return void */ public function testLogin() { $user = factory(\App\User::class)->create(['email' => 'lucas@example.com']); $this->browse(function ($browser) use ($user) { $browser->visit('/login') ->type('email', $user->email) ->type('password', 'secret') ->press('Login') ->assertPathIs('/home'); }); } } 

Вот этот проект в github

Вместо .env.dusk.local попробуйте .env.dusk

Кроме того, вместо использования вашей базы данных mysql я бы рекомендовал использовать временную базу данных sqlite, поскольку она создается и уничтожается во время тестов.

вам нужно будет иметь конфигурацию sqilte в вашем файле database.php, указывающую на фактический файл .sqlite, который у вас есть в вашей установке

поэтому скопируйте конфигурацию sqlite в database.php а затем вставьте ее, назовите ее sqlite_dusk возможно, тогда для местоположения db поместите ее как storage_path('dusk.sqlite') или что-то в этом роде. Затем создайте пустой файл dusk.sqlite в корневой папке вашего storage .

Затем в вашем наборе .env.dusk :

 DB_CONNECTION=sqlite_dusk 

Надеюсь, это поможет!