我想为使用$ http的服务进行单元测试。我使用的茉莉花,我不断收到此错误:TypeError:解析未定义在angularjs服务单元测试
TypeError: parsed is undefined in angular.js (line 13737)
这是我的服务看起来像:
angular.module('myapp.services', [])
.factory('inviteService', ['$rootScope', '$http', function($rootScope, $http) {
var inviteService = {
token: '',
getInvite: function(callback, errorCallback) {
$http.get('/invites/' + this.token + '/get-invite')
.success(function(data) {
callback(data);
})
.error(function(data, status, headers, config) {
errorCallback(status);
});
}
};
return inviteService;
}]);
这是我的测试样子:
describe ('Invite Service', function() {
var $httpBackend, inviteService, authRequestHandler;
var token = '1123581321';
beforeEach(module('myapp.services'));
beforeEach(inject(function ($injector) {
$httpBackend = $injector.get('$httpBackend');
authRequestHandler = $httpBackend.when('/invites/' + token + '/get-invite').respond({userId: 'userX'}, {'A-Token': 'xxx'});
inviteService = $injector.get('inviteService');
}));
afterEach (function() {
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
});
describe ('getInvite', function() {
beforeEach(function() {
inviteService.token = token;
});
it ('should return the invite', function() {
$httpBackend.expectGET('/invites/' + token + '/get-invite');
inviteService.getInvite();
$httpBackend.flush();
});
});
});
我对于单元测试基于angularjs的应用程序来说相当新颖,我在angularjs文档中使用了示例
https://docs.angularjs.org/api/ngMock/service/ $ httpBackend
我不确定我可能会错过什么,而且我已经尝试过不同的事情,并且我总是得到相同的错误,任何帮助将不胜感激。
我创建了一个小提琴http://jsfiddle.net/themyth92/58aLjyp9/1/和它完美的罚款。也许问题不在于测试本身。我可以问你的angularjs版本是什么? – themyth92 2014-11-21 03:06:06
嘿,对不起,延迟,我仍然有问题,但我可以看到你得到它在小提琴上工作,我使用的是角的v1.2.11。谢谢! – 2014-11-24 16:14:45
嗯,我用你的angulr版本更新了小提琴,但它仍然没问题。链接:http://jsfiddle.net/58aLjyp9/2/。有一点需要注意:“$ httpBackend.expectGET('/ invites /'+ token +'/ get-invite');”你忘了打电话给我,因为我在我的小提琴上。除了一切正常之外,您可以通过代码调用分析的变量或者可能涉及到Angularjs中的$ parse服务 – themyth92 2014-11-25 03:49:56