SORU
7 Mart 2013, PERŞEMBE


Nasıl açısal olayları test edebilirim?

Olayları doğru yayılan ya da yayınlanan bu test, ve olaylar elle tetiklemek için ihtiyacım var.

Bunu yapmak için en iyi yolu nedir?

CEVAP
7 Mart 2013, PERŞEMBE


Eğer sadece olay tetikleme bazı test ihtiyacı ve alıcı iseniz, ben böyle severim. Belirli bir olayı harekete sağlanması için ($emit-ed veya $broadcast-ed), casus gitmek yoludur. Veya $broadcast, $emit arayıp, böyle bir şey için sadece olacağını kapsamında bir başvuru gerekir:

spyOn(scope, "$emit")
//run code to test
expect(scope.$emit).toHaveBeenCalledWith("MY_EVENT_ID", other, possible, args);

Eğer ihtiyacın yok, istemiyor endişe ile ilgili tartışmalar geçirilen ile $emit, sen-ebilmek koymak bir $on $rootScope ve set bayrağı bilmek olay oldu üretilir. Şöyle bir şey:

var eventEmitted = false;
$rootScope.$on("MY_EVENT_ID", function() {
   eventEmitted = true;
});
//run code to test
expect(eventEmitted).toBe(true);

Bir olay yakalandığında çalışan test işlevselliği ($on) için, biraz daha kolay oluyor. Sadece $rootScope inject bir fonksiyon olsun ve sonra istediğiniz olay gönderin.

$rootScope.$broadcast("EVENT_TO_TEST", other, possible, args);
//expects for event here

Şimdi, bu olay işleme Direktifi testleri kurmak İçin bir emir veya bir denetleyicisi (veya her ikisi), https://github.com/vojtajina/ng-directive-testing bakın neler olurdu. Denetleyicisi testleri kurma, https://github.com/angular/angular-phonecat/blob/master/test/unit/controllersSpec.js#L27 bkz

Bu yardımcı olur umarım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FamilyFeud

    FamilyFeud

    22 AĞUSTOS 2006
  • Migs351

    Migs351

    3 HAZİRAN 2007
  • Sali Kaceli

    Sali Kaceli

    24 ŞUBAT 2009