2017-03-27 43 views
5

Używam Dusk do zrobienia prostego testu logowania.Jak utworzyć plik .env do przetestowania za pomocą Laravel Dusk

Utworzono plik .env.dusk, aby test korzystał z alternatywnej bazy danych i nie usuwał danych zarejestrowanych na platformie.

Archive .env

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

Archiwum .env.dusk

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

LoginTest.php

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

Ale kiedy uruchomić testy nie zmienia bazy danych i jej usuwa wszystkie dane z bazy danych używanej w aplikacji.

Jak mogę rozwiązać ten problem?

Odpowiedz

3

Musisz dodać wartość środowiska (odpowiadającą środowisku, w którym będziesz inicjować Zmierzch), na końcu nazwy pliku .env.dusk (np. - .env.dusk.local). Dla odniesienia sprawdź dokumentację na Dusk Environment Handling.

Aktualizacja: Jeśli nadal występują problemy na wasze komentarze, umieścić następujące na szczycie swojej funkcji testLogin i sprawozdania co mówi dd(env('APP_ENV'));

+0

Po uruchomieniu php rzemieślnik o zmierzchu pokaż "lokalny" –

+0

Zmień nazwę pliku env.dusk.testing na env.dusk.local – alaric

1

@alaric

Zmieniłem .env.dusk.testing plik do .env.dusk.local

Uruchomiłem php artisan serve i utworzyłem nowego użytkownika w bazie danych laravel_dusk.

Ponownie uruchomiłem php artisan serve, a następnie php artisan dusk, aby uruchomić testy i utworzyć nowego użytkownika z tym samym adresem e-mail, ale w bazie danych laravel_dusk_test i nadal rejestruje się w laravel_dusk.

0

Zamiast korzystać z bazy danych mysql, polecam używanie tymczasowej bazy danych sqlite, ponieważ zostanie ona utworzona i zniszczona podczas testów.

będziesz mieć sqilte config w swoim database.php który wskazuje na rzeczywiste pliku .sqlite że masz w instalacji

więc skopiować sqlite config w database.php a następnie wkleić go, nazwę go sqlite_dusk może, a następnie dla lokalizacji db umieścić go jako storage_path('dusk.sqlite') lub coś w tym stylu. Następnie utwórz pusty plik dusk.sqlite w katalogu głównym swojego folderu storage.

Następnie w zestawie .env.dusk:

DB_CONNECTION=sqlite_dusk 

nadzieję, że pomoże!