2017-03-27 22 views
5

Tôi đang sử dụng Dusk để thực hiện kiểm tra đăng nhập đơn giản.Cách tạo tệp .env để kiểm tra với Laravel Dusk

Tôi đã tạo tệp .env.dusk để thử nghiệm sử dụng cơ sở dữ liệu thay thế và không xóa dữ liệu đã được đăng ký trên nền tảng.

Lưu Trữ .env

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

Lưu Trữ .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'); 
     }); 
    } 
} 

Nhưng khi tôi chạy thử nghiệm nó không thay đổi cơ sở dữ liệu và nó xóa tất cả dữ liệu từ cơ sở dữ liệu được sử dụng trong ứng dụng.

Làm cách nào để giải quyết vấn đề này?

Trả lời

3

Bạn phải nối thêm một giá trị môi trường, (phù hợp với môi trường bạn sẽ khởi tạo Dusk vào), đến cuối tên tệp .env.dusk của bạn, (ví dụ - .env.dusk.local). Để tham khảo, hãy kiểm tra tài liệu trên Dusk Environment Handling.

Cập nhật: Nếu bạn vẫn gặp vấn đề mỗi bình luận của bạn, đặt sau ở phía trên cùng của chức năng testLogin của bạn và báo cáo lại những gì nó nói dd(env('APP_ENV'));

+0

Khi chạy php nghệ nhân hoàng hôn hiển thị "địa phương" –

+0

Thay đổi tên tệp env.dusk.testing thành env.dusk.local – alaric

1

@alaric

Tôi đã thay đổi .env.dusk.testing gửi đến .env.dusk.local

Tôi đã chạy php artisan serve và tạo người dùng mới trong cơ sở dữ liệu laravel_dusk.

Tôi chạy lại php artisan serve và sau đó php artisan dusk để chạy thử nghiệm và tạo người dùng mới có cùng email nhưng trong cơ sở dữ liệu laravel_dusk_test và tiếp tục đăng ký trong laravel_dusk.

0

Thay vì sử dụng cơ sở dữ liệu mysql, tôi khuyên bạn nên sử dụng một db sqlite tạm thời vì nó được tạo và hủy trong khi kiểm tra.

bạn sẽ phải có một cấu hình sqilte trong database.php của bạn trỏ vào một tập tin .sqlite thực tế mà bạn có trong cài đặt của bạn

để sao chép sqlite config trong database.php và sau đó dán nó, tên nó sqlite_dusk có thể, sau đó cho vị trí của db đặt nó là storage_path('dusk.sqlite') hoặc một cái gì đó như thế. Sau đó, tạo một tệp trống dusk.sqlite trong thư mục gốc của thư mục storage của bạn.

Sau đó, trong .env.dusk thiết lập của bạn:

DB_CONNECTION=sqlite_dusk 

Hy vọng rằng sẽ giúp!

Các vấn đề liên quan