Laravel Сумерки не работает .env.dusk.local

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

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

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

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

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

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

.ENV по умолчанию

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

Му функцию для 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' => '[email protected]']);

$this->browse(function ($browser) use ($user) {
$browser->visit('/login')
->type('email', $user->email)
->type('password', 'secret')
->press('Login')
->assertPathIs('/home');
});
}
}

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

7

Решение

Вместо .env.dusk.local пытаться .env.dusk

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

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

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

Тогда в вашем .env.dusk задавать:

DB_CONNECTION=sqlite_dusk

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

0

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

Других решений пока нет …

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