模拟 AngularJS 1 服务时出错
Getting error when mocking an AngularJS 1 service
当我测试这段代码时(来自书籍:Angularjs 服务,作者:Jim Lavin)
describe("authentication service", function(){
var data;
var service;
var q;
var deferred;
var rootScope;
angular.module('test.data', []).factory('data_service',
function (q) {
data = {
retrieveUser: function (email) {
deferred = q.defer();
return deferred.promise;
}
};
return data;
});
beforeEach(module('application.services'));
beforeEach(module('test.data'));
beforeEach(inject(function (authenticate data_service, $rootScope, $q) {
rootScope = $rootScope;
service = authenticate;
q = $q;
}));
it("should call the retrieveUser", function(){
spyOn(data, "retrieveUser").and.callThrough();;
var email = 'test.user@nomail.com';
service.checkUser(email);
deferred.resolve({userName: email,
firstName: Faker.Name.firstName(),
lastName: Faker.Name.lastName()});
rootScope.digest();
expect(data.retrieveUser).toHaveBeenCalled();
});
});
我收到这样的错误:
Error: [$injector:unpr] Unknown provider: qProvider <- q <- data_service.....
我的目标是模拟控制器使用的服务,即(服务)return 一个承诺。
谢谢。
angular.module('test.data', []).factory('data_service',
function (q) {
data = {
从函数参数中删除 q,angular 尝试在此处以其他方式注入它,但它不能
当我测试这段代码时(来自书籍:Angularjs 服务,作者:Jim Lavin)
describe("authentication service", function(){
var data;
var service;
var q;
var deferred;
var rootScope;
angular.module('test.data', []).factory('data_service',
function (q) {
data = {
retrieveUser: function (email) {
deferred = q.defer();
return deferred.promise;
}
};
return data;
});
beforeEach(module('application.services'));
beforeEach(module('test.data'));
beforeEach(inject(function (authenticate data_service, $rootScope, $q) {
rootScope = $rootScope;
service = authenticate;
q = $q;
}));
it("should call the retrieveUser", function(){
spyOn(data, "retrieveUser").and.callThrough();;
var email = 'test.user@nomail.com';
service.checkUser(email);
deferred.resolve({userName: email,
firstName: Faker.Name.firstName(),
lastName: Faker.Name.lastName()});
rootScope.digest();
expect(data.retrieveUser).toHaveBeenCalled();
});
});
我收到这样的错误:
Error: [$injector:unpr] Unknown provider: qProvider <- q <- data_service.....
我的目标是模拟控制器使用的服务,即(服务)return 一个承诺。 谢谢。
angular.module('test.data', []).factory('data_service',
function (q) {
data = {
从函数参数中删除 q,angular 尝试在此处以其他方式注入它,但它不能