大佬教程收集整理的这篇文章主要介绍了单元测试 – 使用Jasmine测试AngularJS工厂功能,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
//my_module.js angular.module('my_module',['my_data']) .config([...]); .controller('my_controller',['$scope','my_data',function($scope,my_data) { $scope.my_function = function() { return my_data.my_factory.save().then(function () { console.log('saved'); },function() { console.log('Error'); }); } } ) //my_data.js angular.module('my_data',[]) .factory('my_factory',['$q','$rootScope',function($q,$rootScopE) { var my_factory= function(my_data) { angular.extend(this,my_data); } my_factory.prototype.save = function() { var deferred = $q.defer(); setTimeout(function() { deferred.resolve(); $rootScope.$apply(); },1000); return deferred.promise; } return my_factory; } ])
所以,我想做的是测试my_data.my_factory.save是否在my_module.my_controller.my_function被触发时被调用.
//my_test.js describe('tesTing my_controller.my_function',function () { beforeEach(module('my_module')); var $rootScope,$controller; beforeEach(inject(function(_$rootScope_,_$controller_) { $rootScope = _$rootScope_; $controller = _$controller_; })); scope = $rootScope.$new(); it('should call the save function',function() { scope.my_function(); expect(my_data.savE).toHaveBeenCalled(); }); }
我需要一点帮助.
其次,您想使用ngMock.文档不是很完整,但给出了很好的见解.更多here和example here(查找测试/单位/控制器).
基本上,你想做的就是模拟这个服务,所以你可以放心它已被调用.为了实现它,将$提供给您的angular.mock.module调用并提供一个嘲笑的my_factory服务.实现它的最好方法是这样的:
describe('tesTing my_controller.my_function',function () { var mockedFactory,$rootScope,$controller; beforeEach(module('my_module',function($providE) { mockedFactory = { save: jasmine.createSpy() }; $provide.value('my_factory',mockedFactory); })); beforeEach(inject(function(_$rootScope_,_$controller_) { $rootScope = _$rootScope_; $controller = _$controller_; })); scope = $rootScope.$new(); it('should call the save function',function() { scope.my_function(); expect(mockedFactory.savE).toHaveBeenCalled(); }); }
这样你将覆盖my_factory依赖关系.
以上是大佬教程为你收集整理的单元测试 – 使用Jasmine测试AngularJS工厂功能全部内容,希望文章能够帮你解决单元测试 – 使用Jasmine测试AngularJS工厂功能所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。