0
我正在嘗試編寫茉莉花單元測試來測試角度控制器,並遇到已注入服務並返回承諾的問題。嘲笑茉莉花承諾
我有一種從服務器獲取數據的服務:
app.factory('LookupService', ['$resource', '$http', '$cookies',
function ($resource, userId) {
return $resource('./Controller/GetFunction', {}, {
query: { method: 'GET', params: { userId: userId }, isArray: true }
});
}]);
被稱爲控制器:
$scope.returnedDataStore = lookupService.get({ userId: $scope.userId });
$scope.returnedDataStore.$promise.then(function (result) {
$scope.processData(result.data);
});
在我的單元測試,我下面注入該服務:
beforeEach(function() {
module('app');
lookupService = jasmine.createSpyObj('LookupService', ['get']);
inject(function ($rootScope, $controller, $q) {
$scope = $rootScope.$new();
var deferred = $q.defer();
lookupService.get.and.returnValue(deferred.promise);
ctrl = $controller('myController', {
$scope: $scope,
LookUpService: lookupService
});
});
});
但是,當在控制器中調用服務時,我收到一個錯誤,指出錯誤阿泰說$scope.returnedDataStore.$promise
未定義:未定義
我已經搜查了很多試圖解決這個問題,但我並沒有多少運氣
無法讀取屬性「然後」。
如果有人能指出我正確的方向,我會非常感激!
謝謝!我設法通過嘲笑承諾對象,如上所述。以供將來參考我的代碼,原先爲: lookupService.get.and.returnValue({ \t \t \t \t $承諾: \t \t \t \t { \t \t \t \t \t則:函數(){ \t \t \t \t \t \t \t \t \t \t \t} \t \t \t \t} \t \t \t}); – Loki 2014-11-03 12:32:59