gpt4 book ai didi

javascript - 类型错误 : parsed is undefined on angularjs service unit test

转载 作者:数据小太阳 更新时间:2023-10-29 06:11:24 26 4
gpt4 key购买 nike

我正在尝试对使用 $http 的服务进行单元测试。我正在使用 Jasmine,但我一直收到此错误:

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/ $http后端

我不确定我可能遗漏了什么,我已经尝试了不同的东西,但我总是遇到同样的错误,我们将不胜感激。

最佳答案

parsed 变量是相关服务的 URL。由于以下原因之一,它是 undefined:

  • URL 格式不正确
  • $http.get 没有被调用
  • token 未定义
  • sucesserror 回调没有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();
}
}
}

引用资料

关于javascript - 类型错误 : parsed is undefined on angularjs service unit test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27048392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com