我有一个Angular App,我想用它创建单元测试用例jasmine。
在我AngularJS的应用程序,我有一个服务:
使用jasmine进行单元测试的模拟angularjs服务
var canceler;
var myServices = angular.module('myServices', ['ngResource'])
myServices.factory('getData', ['$http', '$q', function($http, $q){
var canceler;
return {
setData: function(url, callback, error) {
canceler = $q.defer();
$http.post(url, {}, {timeout:canceler.promise}).success(callback).error(error);
},
abort: function(){ canceler.resolve();}
}
}]);
这个服务正在使用的控制器。
现在我怎么能提供这个“getData”服务到我在controllerSpecs.js中使用的注入器(用于使用茉莉花的单元测试)的模拟。
作为参考,controllerSpecs.js的代码在Getting error while using Jasmine with AngularJS中定义。
我无法理解,当我们将mockgetdata的名称中的空白数据和函数放在什么都不做时,我会从jasmin调用相同的函数来测试它的功能时会发生什么? –
@ r.bhardwaj,你可以在setData函数中模拟真正的GetData的工作,** data **属性不是必需的,你可以在测试过程中保存一些数据。我已经更新了答案,但我不知道你的服务的逻辑,所以你可以在那里使用任何逻辑。 – IgorCh
得到了一点,但还有一件事要问 - 如果不是创建模拟我得到使用$ injector.get('getData')的'getData'服务,那有什么害处? –