gpt4 book ai didi

javascript - AngularJS 工厂中的 Jasmine 测试失败

转载 作者:行者123 更新时间:2023-12-03 04:49:13 26 4
gpt4 key购买 nike

我在 AngularJS 中创建了以下基本工厂来检索对象数组:

angular.
module('core.beer-retriever').
factory('Beer', ['$resource',
($resource) => {
return $resource('https://www.xxxxxxxxx.com/v2/beers', {}, {
query: {
method: 'GET',
isArray: true
},
});
},
]);

我用 Jasmine 创建了以下测试:

  describe('Beer Service', function() {
beforeEach(angular.mock.module('core.beer-retriever'));

beforeEach(inject(function($httpBackend) {
let beersRetrieved = {
results: [{
"id": 192,
"name": "Punk IPA 2007 - 2010",
}]
};
$httpBackend.whenGET('https://api.xxxxxxxxx.com/v2/beers')
.respond(beersRetrieved);
}));

it('is defined', inject(function(Beer) {
expect(Beer).toBeDefined();
}));

it('returns a resource function', inject(function(Beer) {
const output = Beer;
expect(output).toEqual(jasmine.any(Function));
expect(output.query({}.$promise)).toBeDefined();
}));

it('returns beers',
inject(function(Beer) {
const output = Beer.query();
expect(output.length).toEqual(1);
expect(output[0].id).toEqual(192);
httpBackend.flush();
}));
});

前两次测试成功,但第三次失败:

Expected 0 to equal 1.
TypeError: Cannot read property 'id' of undefined
at Object.<anonymous> (app/core/beer-retriever/beer-retriever.spec.js:29:25)
at Object.invoke (app/bower_components/angular/angular.js:4862:19)
at Object.WorkFn (app/bower_components/angular-mocks/angular-mocks.js:3170:20)

如何找出问题出在哪里?

最佳答案

需要向您的资源 promise 对象添加解析函数。查看此工作 plunker

output.$promise.then(function(data) {
console.log(data);
output = data[0].results;
});

完整规范如下所示:

  it('returns beers',
inject(function(Beer, $httpBackend) {
var output = Beer.query();
output.$promise.then(function(data) {
console.log(data);
output = data[0].results;
});
$httpBackend.flush();
console.log('a11: ' + JSON.stringify(output));
expect(output.length).toEqual(1);
console.log(output[0].id);
expect(output[0].id).toEqual(192);
}));

关于javascript - AngularJS 工厂中的 Jasmine 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42738747/

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