2017-06-20 19 views
7

Dự án của tôi trên khuôn khổ Laravel 5.4 và tôi đang sử dụng Dusk để kiểm tra trình duyệt. Tôi có một trang có nhiều phần tôi muốn thử nghiệm độc lập, tuy nhiên tôi đang gặp sự cố khi tôi phải bắt đầu một phiên bản trình duyệt mới, đăng nhập và điều hướng đến trang đó, cho từng thử nghiệm riêng lẻ.Làm cách nào để sử dụng lại phiên bản trình duyệt thử nghiệm Dusk?

public function testExample() 
{ 
    $this->browse(function (Browser $browser) { 
    $browser->loginAs(1) 
      ->visit('/admin/dashboard') 
      ->assertABC() 
      ->assertXYZ(); 
    }); 
} 

Vì vậy, khi tôi có 4-5 trong số này trong class allTheThingsTest extends DuskTestCase, tôi đẻ 4-5 trường hợp trình duyệt mỗi lớp thử nghiệm. Rõ ràng điều này được ra khỏi tay một cách nhanh chóng, đặc biệt là khi tôi đang chạy tất cả các bài kiểm tra của tôi trước khi triển khai.

Một phiên bản trình duyệt cho mỗi lớp thử nghiệm có thể chấp nhận được cho đến khi tôi quan tâm, nhưng tôi không thể tìm ra cách thực hiện điều đó. Vì vậy, đây là những gì tôi yêu cầu:

  • Có thể nhớ/sử dụng lại một thể hiện trình duyệt giữa các hàm kiểm tra trong một lớp thử nghiệm không?
  • Nếu có, làm cách nào?

Trả lời

1

Trích dẫn từ tài liệu laravel:

Đôi khi, bạn có thể muốn ràng buộc gì đó vào container mà chỉ nên được giải quyết một lần, và các ví dụ tương tự nên được trả lại cho các cuộc gọi tiếp theo vào container:

$this->app->singleton('FooBar', function($app) 
{ 
    return new FooBar($app['SomethingElse']); 
}); 
+0

Bạn có thể đưa liên kết đến phần có liên quan của Tài liệu Laravel không? Cũng có thể là một ví dụ thực tế về cách thức này sẽ nhìn trong một lớp thử nghiệm? – amflare

+0

https://laravel.com/docs/5.6/container#binding Binding singleton –

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