Cách tạo ra file .env.dusk để test cùng Laravel Dusk ?
Mình đang test thử một cái login đơn giản. Mình có tạo ra một file .env.dusk.local để tạo ra một môi trường test riêng.
File .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=Laravel_Project
DB_USERNAME=root
DB_PASSWORD=
File .env.dusk.local
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=Laravel_Project_Test
DB_USERNAME=root
DB_PASSWORD=
LoginTest.php
   $user = User::where('email', 'admin@laravel.com')->first();
        if (!$user) {
            $user = factory(User::class)->create([
                'email' => 'admin@laravel.com',
                'password' => bcrypt('secret'),
            ]);
        }
        $this->browse(function (Browser $browser) use ($user) {
            $browser->visit('/login')
                    ->type('email', $user->email) 
                    ->type('password', 'secret')
                    ->press('Login')
                    ->assertPathIs('/home');
        });
Khi mình chạy " php artisan dusk " thì dữ liệu trong Database "Laravel_Project" bị rollback ( database rỗng ) còn trong Database "Laravel_Project_Test" thì không có gì thay đổi . Trên Terminal có thông báo lỗi :
1) Tests\Browser\LoginTest::testLogin
Illuminate\Database\QueryException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'Laravel_Project.users' doesn't exist (SQL: select * from `users` where `email` = admin@laravel.com limit 1)
- Vậy có nghĩa là file .env.dusk.local không hề được sử dụng ? Làm sao để tạo ra một môi trường test riêng mà k ảnh hưởng đến dữ liệu của hệ thống ?
- Khi chạy " php artisan dusk " dữ liệu sẽ bị rollback ?
Mong mọi người thông não giúp mình với ^^
2 CÂU TRẢ LỜI
2 câu hỏi thì bạn Tuấn trả lời rồi
Khi mình chạy " php artisan dusk " thì dữ liệu trong Database "Laravel_Project" bị rollback ( database rỗng ) còn trong Database "Laravel_Project_Test" thì không có gì thay đổi
Cái này do em bị cache gì đó thôi. Chay lệnh này là ok
php artisan cache:clear
php artisan config:clear
Note: Đặt tên bảng viết thường không dấu cho đúng convention em uây.
Có chút ko đọc kỹ tài liệu 
Làm sao để tạo ra một môi trường test riêng mà k ảnh hưởng đến dữ liệu của hệ thống
- Đặt tên file env là .env.dusk
- Hoặc đặt tên file env của dusk theo cấu trúc .env.dusk.{APP_ENV}, trong đó{APP_ENV}là giá trịAPP_ENVtrong file.env. File này sẽ được ưu tiên hơn file.env.dusk
Tham khảo: https://laravel.com/docs/5.7/dusk#environment-handling
Khi chạy " php artisan dusk " dữ liệu sẽ bị rollback?
Dữ liệu sẽ bị rollback hay toàn bộ DB sẽ bị truncate nếu trong test case có sử dụng 1 trong 2 trait RefreshDatabase hoặc DatabaseMigrations, bạn xem lại file test case xem:
<?php
namespace Tests\Browser;
use Tests\DuskTestCase;
use Laravel\Dusk\Browser;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ExampleTest extends DuskTestCase
{
    use RefreshDatabase;
    // use DatabaseMigrations; // OR THIS
    /**
     * A basic browser test example.
     *
     * @return void
     */
    public function testBasicExample()
    {
        $this->browse(function (Browser $browser) {
            $browser->visit('/')
                    ->assertSee('Laravel');
        });
    }
}
Tham khảo:
Cảm ơn 2 bạn vấn đề của mình đã được giải quyết. Do mình k clean cache nên nó vẫn sử dụng file .env => sử dụng database config trong file .env . Trong file test mình sử dụng trait DatabaseMigrations nên khi chạy dữ liệu bị rollback.
 
  
  
  
 