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 по умолчанию

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' => '[email protected]']);

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

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


person Lucas Lopes    schedule 27.03.2017    source источник
comment
Возможный дубликат Как создать файл .env для тестирования с помощью Laravel Dusk   -  person Benjamin Diaz    schedule 29.03.2017


Ответы (1)


Вместо .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

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

person askilondz    schedule 29.03.2017
comment
Но laravel.com/docs/5.6/dusk#environment-handling говорит: Чтобы заставить Dusk использовать собственный файл среды при запуске тестов, создайте .env.dusk.{environment} файл в корне вашего проекта .. - person Ryan; 15.04.2018