类型错误:parsed 在 angularjs 服务单元测试中未定义
TypeError: parsed is undefined on angularjs service unit test
我正在尝试为使用$http的服务进行单元测试。我正在使用茉莉花,但不断收到此错误:
类型错误:解析在角度中未定义.js(第 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
我不确定我可能错过了什么,我已经尝试了不同的事情,但我总是得到同样的错误,任何帮助将不胜感激。
parsed
变量是相关服务的 URL。undefined
的原因如下:
- 网址格式不正确
- 不调用 $http.get
- 未定义
token
-
sucess
和error
回调没有data
-
.respond
不被调用 -
.respond
不包含响应对象作为参数
例如:
describe('simple test', test);
function test()
{
it('should call inviteService and pass mock data', foo);
function foo()
{
module('myapp.services');
inject(myServiceTest);
function myServiceTest(inviteService, $httpBackend)
{
$httpBackend.expect('GET', /.*/).respond(200, 'bar');
function callback(){};
inviteService.getInvite.token = '1123581321';
inviteService.getInvite(callback, callback);
$httpBackend.flush();
expect(callback).toHaveBeenCalledOnce();
}
}
}
引用
AngularJS 源代码:angular-mocksSpec.js - "当只有解析的主体与预期的主体对象不同时,应该抛出异常"
AngularJS source: urlUtils.js
AngularJS来源:urlUtilsSpec.js
相关文章:
- Jasmine单元测试在监视服务方法时失败
- Angular 2和服务单元测试
- 在http服务单元测试中使用request-js时,chai.request不是一个函数
- $cacheFactory removeAll() 在服务中的单元测试在 Angular 1.2.0 中失败,但在 1.
- 如何在 angularjs 茉莉花单元测试中正确引用服务
- 无法将服务注入其 Angular 单元测试中
- 角度单元测试服务元素持久性
- 在 Karma/Jasmine 单元测试中注入 Angular $timeout服务的真实实现
- 尝试在 AngularJS 上对基本服务进行单元测试时出错
- 单元测试依赖于服务的角度过滤器
- 类型错误:parsed 在 angularjs 服务单元测试中未定义
- 如何在Jasmine中对依赖服务的函数进行单元测试
- 单元测试服务不;t注入工厂
- 为创建Json REST服务的模块编写单元测试
- 如何对一个主要负责重定向到应用程序外部页面的Angular服务进行单元测试
- 错误:单元测试AngularJs服务时,没有待处理的flush请求
- 单元测试调用服务的指令
- 用注入服务对angular控制器进行单元测试
- Angular单元测试,模拟使用$injector注入的服务
- Angularjs服务单元测试