加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

单元测试 – 如何在AngularJS中测试$范围$on

发布时间:2020-12-17 08:14:22 所属栏目:安全 来源:网络整理
导读:在广播后如何测试播放范围?我已经搜索并在stackexchange中找到了几个QA,但没有人回答我的问题。代码正常工作,只是不知道如何测试它。我可以补充说,我是一个新手来测试,特别是茉莉花。 所以,这里是代码: 服务CrappySvc: update: function() { $rootSc
在广播后如何测试播放范围?我已经搜索并在stackexchange中找到了几个QA,但没有人回答我的问题。代码正常工作,只是不知道如何测试它。我可以补充说,我是一个新手来测试,特别是茉莉花。

所以,这里是代码:

服务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'}]);

});

你需要告诉茉莉花让间谍打电话给实际的$ broadcast功能
spyOn($rootScope,'$broadcast').andCallThrough();

如果你不使用和CallThrough(),间谍什么都不做。

and.callThrough" rel="nofollow" target="_blank">Jasmine Docs

编辑

使用Jasmine 2,语法将是

spyOn($rootScope,'$broadcast').and.callThrough();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读