我如何在AngularJS中测试$ scope$ on

【字号: 日期:2024-04-10浏览:41作者:雯心
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决我如何在AngularJS中测试$ scope$ on?

您需要告诉Jasmine让间谍调用实际的$ broadcast函数

spyOn($rootScope, ’$broadcast’).andCallThrough();

如果您不使用andCallThrough()间谍,则不会执行任何操作。

jasmine文档

对于Jasmine 2,语法为

spyOn($rootScope, ’$broadcast’).and.callThrough();解决方法

如何测试广播后是否填充了示波器?我已经搜索并在stackexchange中找到了一些质量检查,但是没有一个回答我的问题。该代码可以正常工作,只是不知道如何对其进行测试。我可以补充一点,我是测试的新手,尤其是Jasmine。

所以,这是代码:

服务CrappySvc:

update: function() { $rootScope.$broadcast(’updatecrappy’,Crappy.query());}

控制器GetCrappyCtrl:

$scope.$on(’updatecrappy’,function(event,crap) { $scope.crap = crap; });

茉莉花:

beforeEach(inject(function($rootScope,$httpBackend,$controller,Crappy) { rootScope = $rootScope; scope = $rootScope.$new(); Crappy = mockCrappy; ... spyOn(rootScope,’$broadcast’); ... ctrl = $controller(’GetCrappyCtrl’,{ $scope : scope,Crappy : mockCrappy});

}));

it(’$scope.$on should have been triggered’,function() { rootScope.$broadcast(’updatecrappy’,[{id : 2,name : ’crappy’}]); expect(rootScope.$broadcast).toHaveBeenCalledWith(’updscenes’,name : ’crappy’}]);

});

结石

相关文章: