【发布时间】:2013-05-21 09:14:33
【问题描述】:
我有一个控制器,它在根作用域上发出广播事件。我想测试一下是否正确触发了广播事件。
我的控制器中的代码如下所示:
$scope.$watch("pageIndex", function(){
if($scope.pageIndex == 4)
{
// emit social share
$rootScope.$broadcast('myEvent');
}
});
我尝试使用以下代码对其进行测试:
it('Should call myEvent when pageIndex is 4',function(){
scope.pageIndex = 4;
scope.$apply();
expect(rootScope.$on).toHaveBeenCalledWith('myEvent');
});
但它告诉我代码没有被调用,我已经手动测试了它。然后我尝试了以下代码:
it('Should call myEvent when pageIndex is 4',function(){
var listener = jasmine.createSpy('listener');
rootScope.$on('myEvent', listener);
scope.pageIndex = 4;
scope.$apply();
expect(listener).toHaveBeenCalled();
});
但同样的负面结果。有没有办法测试事件是否被广播?
【问题讨论】: