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