如何测试与茉莉花AngularJS控制器调用服务方法返回承诺
发布时间:2020-12-17 08:17:18 所属栏目:安全 来源:网络整理
导读:我正在使用AngularJS的v1.2.0-rc.3与茉莉花测试框架。 我试图断言一个控制器调用一个服务方法。服务方法返回承诺。控制器如下所示: angular.module('test',[]).controller('ctrl',['$scope','svc',function ($scope,svc) { $scope.data = []; svc.query() .
我正在使用AngularJS的v1.2.0-rc.3与茉莉花测试框架。
我试图断言一个控制器调用一个服务方法。服务方法返回承诺。控制器如下所示: angular.module('test',[]) .controller('ctrl',['$scope','svc',function ($scope,svc) { $scope.data = []; svc.query() .then(function (data) { $scope.data = data; }); }]); 当服务方法的延迟被解析时,我想测试数据被分配给作用域。我创建了一个模拟的服务,单元测试看起来像这样: describe('ctrl',function () { var ctrl,scope,svc,def,data = [{name: 'test'}]; beforeEach(module('test')); beforeEach(inject(function($controller,$rootScope,$q) { svc = { query: function () { def = $q.defer(); return def.promise; } }; scope = $rootScope.$new(); controller = $controller('ctrl',{ $scope: scope,svc: svc }); })); it('should assign data to scope',function () { spyOn(svc,'query').andCallThrough(); deferred.resolve(data); scope.$digest(); expect(svc.query).toHaveBeenCalled(); expect(scope.data).toBe(data); }); }); 我期望svc的查询方法被调用,但显然没有。 我遵循this指南来嘲笑单位测试的承诺。 我究竟做错了什么?
看来我把我的间谍放在错误的地方。当我把它放在前面的时候,测试通过了。
beforeEach(inject(function($controller,$q) { svc = { query: function () { def = $q.defer(); return def.promise; } }; spyOn(svc,'query').andCallThrough(); scope = $rootScope.$new(); controller = $controller('ctrl',svc: svc }); })); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 登录从Angular应用程序和msal.js重定向Azure AD B2C的用户
- AT91Bootstrap1.16第二阶段C程序详解之一
- chef – Knife bootstrap error – 成功验证但未获得此操作
- angularjs – Angular JS:为什么module.config注入和控制器
- 如何在Scala中实现org.hibernate.Session
- 拆分 – 从主应用程序文件中分离角度2路径配置
- angular-material2 – 如何使用角度材料2制作响应式导航栏?
- scala – 当存储级别设置为磁盘时,Spark存储数据在哪里?
- 手把手教你用ngrx管理Angular状态(下)
- Bootstrap table使用方法汇总