2017-03-27 56 views
5

Basit bir giriş testi yapmak için Dusk kullanıyorum. Test alternatif veritabanını kullanır ve platformda tescil edilmiş verileri silmez böylece Laravel Dusk ile test için .env dosyası nasıl oluşturulur

Bir .env.dusk dosyası oluşturdu.

Archive .env

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

Arşiv

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 Ama testleri çalıştırdığınızda onu veritabanını değiştirmediğini ve Uygulamada kullanılan veritabanından tüm verileri siler.

Bu sorunu nasıl çözebilirim?

cevap

3

.env.dusk dosya adınızın sonuna (örn. - .env.dusk.local) sonuna kadar (Dusk olarak başlatılacak ortamı eşleştiren) bir ortam değeri eklemelisiniz. Referans için Dusk Environment Handling'daki belgeleri kontrol edin.

Güncelleme: Hala yorumların başına sorun yaşıyorsanız, lütfen testLogin fonksiyonunun üst kısmında aşağıdaki koymak ve ben .env.dusk.testing değişti dd(env('APP_ENV'));

+0

çalıştırmak php esnaf alacakaranlık gösterisi "Yerel" env.dusk.local için env.dusk.testing dosya adını değiştirme –

+0

zaman – alaric

1

@alaric

ne diyor rapor .env.dusk.local

dosyasını Ben php artisan serve koştu ve laravel_dusk veritabanında yeni bir kullanıcı yarattı.

Testleri çalıştırmak ve aynı e-postaya sahip ancak laravel_dusk_test veritabanında yeni bir kullanıcı oluşturmak için php artisan dusk numaralı telefonu tekrarçalıştırdım ve laravel_dusk'a kayıt olmaya devam ediyorum.

0

Bir mysql veritabanı kullanmak yerine, testler sırasında oluşturulup yok edildiğinden geçici bir sqlite db kullanmanızı öneririm.

Eğer

böylece database.php yılında sqlite yapılandırma kopyalayıp yapıştırın kurulumda sahip gerçek bir .sqlite dosyası işaret senin DatabaseFunctions.php bir sqilte yapılandırma sahip olmak zorunda kalacaktır, adı o sqlite_dusk Belki de, db konumu için storage_path('dusk.sqlite') ya da bunun gibi bir şey koydu. Ardından, storage klasörünüzün kökünde boş bir dusk.sqlite dosyası oluşturun. senin .env.dusk sette

Ardından: yardımcı

DB_CONNECTION=sqlite_dusk 

Umut!