2016-07-19 36 views
1

在Angular version1中,我如何測試我的範圍$ on listener是否被調用?

這是我的代碼:

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

這是我的測試:

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

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

這是我的錯誤:預計虛假等於真。

我正在使用karma runner與茉莉花和JavaScript。

回答

0

做一個$摘要,所以角知道要更新。

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

另外,您可以的廣播裏聽了父範圍:

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

謝謝,我會嘗試明天並讓你知道 – AngularM

+0

它沒有工作,當我添加範圍。$ digest(); – AngularM

0

爲了得到這個工作,我需要這樣做:

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