我有一個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'服務,那有什麼害處? –