我试图单元测试控制器代码在一个模块,需要其他模块作为依赖,但没有能够弄清楚如何正确模拟它们。
我使用Jasmine框架和运行我的测试与Karma(Testacular)。
模块代码
var app = angular.module('events',['af.widgets','angular-table']); app.controller('eventsCtrl',function([dependencies]){ $scope.events = []; ... });
规格代码
describe('events module',function(){ var $scope,ctrl; beforeEach(function(){ angular.mock.module('af.widgets',[]); angular.mock.module('angular-table',[]); module('events','angular-table']); }); beforeEach(inject(function($rootScope,$controller){ $scope = $rootScope.new(); ctrl = $controller('NameCtrl',{ $scope: $scope,}); })); it('should have an empty events array',function(){ expect($scope.events).toBe([]); }) });
如果你想模拟一个声明一个或多个服务的模块,我使用了这个代码:
beforeEach(function(){ module('moduletoMock'); module(function ($provide) { $provide.value('yourService',serviceMock); }); });
如果你想要模拟的服务也是你想要单元测试的服务(在另一个茉莉花描述),这是有用的。fscof提出的解决方案很好,但是您不能为角度表模块创建单元测试。
原文地址:https://www.jb51.cc/javaschema/282950.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。