2017-06-20 44 views
7

Projem Laravel 5.4 çerçevesinde ve tarayıcı testleri için Dusk kullanıyorum. Birden çok bölümün bağımsız olarak test edilmesini istediğim bir sayfam var. Ancak, her bir test için yeni bir tarayıcı örneğini başlatmam, giriş yapmam ve o sayfaya gitmem gereken sorunla karşılaşıyorum. Ben class allTheThingsTest extends DuskTestCase bunlardan 4-5 olduğunda Dusk testi tarayıcı örneği nasıl yeniden kullanılır?

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

Yani, 4-5 tarayıcı örneklerini yumurtlama ediyorum Test sınıfına başına. Açıkçası, bu, özellikle tüm testler öncesi dağıtımımı çalıştırdığımda, çabucak elden çıkıyor.

Test sınıfı başına bir tarayıcı örneği, söz konusu olduğum ölçüde kabul edilebilir, ancak bunun nasıl gerçekleştirileceğini anlayamıyorum. Bu yüzden soruyorum:

  • Tek bir test sınıfındaki test işlevleri arasında bir tarayıcı örneğini hatırlamak/yeniden kullanmak mümkün mü?
  • Varsa nasıl?

cevap

1

laravel docs alıntı:

Bazen sadece bir kez çözülmesi gerektiğini kabın içine bir şey bağlamak isteyebilirler ve aynı örneği kabın içine müteakip çağrılarda döndürülmelidir:

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

Laravel Belgelerinin ilgili bölümüne bir bağlantı ekleyebilir misiniz? Ayrıca, bunun bir Test Sınıfı'nda nasıl görüneceğine dair pratik bir örnek olabilir mi? – amflare

+0

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