Javascript TypeError:undefined不是Angular factory中init函数的Karma/Jasmine测试中的函数
我在AngularJS有一个简单的工厂:Javascript TypeError:undefined不是Angular factory中init函数的Karma/Jasmine测试中的函数,javascript,angularjs,unit-testing,jasmine,karma-runner,Javascript,Angularjs,Unit Testing,Jasmine,Karma Runner,我在AngularJS有一个简单的工厂: function usersListDataProviderFactory(UserResource, $q) { var usersListDataProvider = {}, queryParams = {}; init(queryParams); return { initDataProvider: function (queryParams) { init(que
function usersListDataProviderFactory(UserResource, $q) {
var usersListDataProvider = {},
queryParams = {};
init(queryParams);
return {
initDataProvider: function (queryParams) {
init(queryParams);
},
getDataProviderPromise: function () {
return usersListDataProvider;
}
};
function init(queryParams) {
var defer = $q.defer();
UserResource.getUsers(queryParams).then(function (response) {
defer.resolve(response);
}, function (error) {
defer.reject(error);
});
usersListDataProvider = defer.promise;
}
}
我已经在Karma/Jasmine中写了测试,在评论了这些行之后通过了测试:
init(queryParams);
当我恢复自动函数调用时,我收到一条消息:
TypeError: undefined is not a function (evaluating 'UserResource.getUsers(queryParams).then')
我知道问题在于测试的配置和间谍创建的那一刻,但我不知道如何解决问题。当前测试配置:
describe('Service: UsersListDataProvider', function () {
var usersListDataProvider,
userResourceStub,
deferred,
$rootScope,
$q;
beforeEach(function () {
module('UsersList');
});
beforeEach(function () {
userResourceStub = {
getUsers: function (queryParams) {
return queryParams;
}
};
module(function ($provide) {
$provide.value('UserResource', userResourceStub);
});
});
beforeEach(inject(function (_UsersListDataProvider_, _$rootScope_, _$q_) {
usersListDataProvider = _UsersListDataProvider_;
$rootScope = _$rootScope_;
$q = _$q_;
deferred = _$q_.defer();
}));
beforeEach(function () {
spyOn(userResourceStub, 'getUsers').and.returnValue(deferred.promise);
});
describe('Method: initDataProvider', function () {
it('');
});
});
有什么想法吗