5

Obejmuję tę część systemu z testem atm, mam zdarzenia powiązane w taki sposób, że zatrzymanie propagacji na pierwszym musi anulować drugie zdarzenie z ostrzału.Sprawdź, czy zdarzenie nie zostało wywołane na elemencie ze szpiegiem Jasmine

$.fn.extend({ 
     OnTheMoveBCTrigger: function (name, options) { 
      if (!(this[0] instanceof OnTheMove_BusinessComponent)) { 
       throw ('is not an instance of OnTheMove_BusinessComponent'); 
      } else { 
       var event = $.Event(name); 
       var promise = $(this).OnTheMoveTrigger(event, options); 
       if (!event.isPropagationStopped()) { 
        $(onTheMove.PageDataRoles).OnTheMoveTrigger(name, options); 
       } 
      } 
     } 
    }); 

Pomyślałem, jak sprawdzić, że drugie zdarzenie został zwolniony z jaśminu-jquery spyOnEvent

it("OnTheMoveBCTrigger chain fires event on onTheMove.PageDataRoles", function() { 
     var spy = spyOnEvent(onTheMove.PageDataRoles, 'event2'); 
     $(window.bc).OnTheMoveBCTrigger("event2"); 
     expect('event2').toHaveBeenTriggeredOn(onTheMove.PageDataRoles); 
     expect(spy).toHaveBeenTriggered(); 
    }); 

ale teraz muszę przetestować przypadek gdzie propagacja jest zatrzymane, a drugie zdarzenie nie jest zwolniony.
Jak sprawdzić, czy zdarzenie nie zostało wyrzucone?

Odpowiedz

1

Istnieje właściwość not na Jasmine expect, która umożliwia odwrócenie kontroli.
Poniższy kod pracował dla mnie.

it("OnTheMoveBCTrigger does NOT chain fire event on onTheMove.PageDataRoles, if propogation is stopped on BC event.", function() { 
     var spy = spyOnEvent(onTheMove.PageDataRoles, 'event3'); 
     $(window.bc).on("event3", function (e) { 
      e.stopPropagation(); 
     }); 
     $(window.bc).OnTheMoveBCTrigger("event3"); 
     expect('event3').not.toHaveBeenTriggeredOn(onTheMove.PageDataRoles); 
     expect(spy).not.toHaveBeenTriggered(); 
    }); 
Powiązane problemy