2016-07-19 1 views
1

In Angular version1 wie kann ich testen, dass mein scope. $ Auf Listener aufgerufen wird?

Dies ist mein Code:

$scope.$on("pagination:getCardExpandData", (event, cardObj) => $scope.loadLocationCardExpandedData(cardObj)); 

Dies ist mein Test:

it("should call loadLocationCardExpandedData function on emit", function() { 
    scope.$emit('pagination:getCardExpandData', {}); 

    expect(scope.$on.calledWith("pagination:getCardExpandData", {})).toEqual(true); 
    expect(scope.loadLocationCardExpandedData).toHaveBeenCalled(); 
    }); 

Dies ist der Fehler, den ich bekommen: Erwartete falsch wahr gleichen.

Ich benutze Karma-Läufer mit Jasmin und JavaScript.

Antwort

0

Tun Sie eine $ Digest, die so eckig weiß, um zu aktualisieren.

scope.$emit('pagination:getCardExpandData', {}); 
scope.$digest(); 

Alternativ können Sie auf einem übergeordneten Bereich von hörte:

var called = false; 
$rootScope.$on('pagination:getCardExpandData', function(){ 
    called = true; 
}); 
+0

Dank Ich werde morgen versuchen, und lassen Sie es wissen – AngularM

+0

Es hat nicht funktioniert, wenn ich den Bereich hinzugefügt. $ Digest(); – AngularM

0

dies umgehen ich dies tun müssen, arbeiten:

scope.$emit('pagination:getTabPage', "next", function(){ 
     expect(scope.$on.calledWith("pagination:getTabPage", "next")).toEqual(true); 
     expect(scope.loadLocationTab).toHaveBeenCalled(); 
    }); 
Verwandte Themen