2017-03-27 7 views
5

나는 간단한 로그인 테스트를하기 위해 황혼을 사용하고 있습니다.Laravel Dusk로 테스트 용 .env 파일을 만드는 방법

테스트에서 대체 데이터베이스를 사용하고 플랫폼에 등록 된 데이터를 삭제하지 않도록 .env.dusk 파일을 만들었습니다.

아카이브 .env의

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=laravel_dusk 
DB_USERNAME=root 
DB_PASSWORD=123456 

아카이브

namespace Tests\Browser; 

use Tests\DuskTestCase; 
use Illuminate\Foundation\Testing\DatabaseMigrations; 

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'); 
     }); 
    } 
} 

LoginTest.php

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=laravel_dusk_test 
DB_USERNAME=root 
DB_PASSWORD=123456 

을 .env.dusk하지만 테스트를 실행할 때 그것을 데이터베이스를 변경하지 않습니다 응용 프로그램에서 사용되는 데이터베이스에서 모든 데이터를 삭제합니다.

이 문제를 어떻게 해결할 수 있습니까?

답변

3

황혼을 초기화 할 환경과 일치하는 환경 값을 .env.dusk 파일 이름 끝에 추가해야합니다 (예 : --env.dusk.local). 참조를 위해 Dusk Environment Handling에 대한 설명서를 확인하십시오.

업데이트 : 당신은 여전히 ​​귀하의 의견에 따라 문제가있는 경우 testLogin 함수의 맨 위에 다음을 넣어 그것은 내가 .env.dusk.testing을 변경 dd(env('APP_ENV'));

+0

php artisan dusk show "local"을 실행하는 경우 –

+0

env.dusk.testing 파일 이름을 env.dusk.local로 변경하십시오 – alaric

1

@alaric

말씀을 다시보고를 파일에 .env.dusk.local

php artisan serve을 실행하고 laravel_dusk 데이터베이스에서 새 사용자를 만들었습니다.

php artisan serve을 다시 실행 한 다음 php artisan dusk을 실행하여 동일한 이메일을 사용하지만 데이터베이스 laravel_dusk_test에 새 사용자를 만들고 laravel_dusk에 계속 등록하십시오.

0

mysql 데이터베이스를 사용하는 대신 임시 sqlite db를 사용하는 것이 좋습니다. 테스트 중에 생성 및 파괴되므로 임시 sqlite db를 사용하는 것이 좋습니다.

당신이

그렇게 database.phpsqlite 설정을 복사하여 붙여 넣 설치에있는 실제 .sqlite 파일에서를 가리키는 database.php에서 sqilte 설정을해야합니다, 이름을 sqlite_dusk 어쩌면 db 위치에 대해 storage_path('dusk.sqlite') 또는 그와 비슷한 것으로 입력하십시오. 그런 다음 storage 폴더의 루트에 빈 dusk.sqlite 파일을 만듭니다. 당신의 .env.dusk 세트

다음 : 도움이

DB_CONNECTION=sqlite_dusk 

희망!