5

Ich beziehe diesen Teil des Systems mit Tests atm, ich habe Ereignisse in einer Weise verkettet, die das Fortsetzen des zweiten Ereignisses vom Feuern erst stoppen muss.Test, ob Ereignis auf Element mit Jasmine-Spion nicht ausgelöst wurde

$.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); 
       } 
      } 
     } 
    }); 

Ich dachte, wie der zweite Ereignis zu überprüfen, mit Jasmin-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(); 
    }); 

aber jetzt muß gefeuert wurde ich den Fall prüfen, wo die Ausbreitung und die zweite Ereignis gestoppt wird, nicht gefeuert zu werden.
Wie überprüft man, ob das Ereignis nicht ausgelöst wurde?

Antwort

1

Es gibt not Eigenschaft auf Jasmine expect, die es ermöglicht, den Scheck zu invertieren.
Code unten arbeitete für mich.

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(); 
    });