0
に失敗した私は、オブジェクトの配列をretieves AngularJS以下の基本的な工場で作成していますジャスミンテストはAngularJS工場
angular.
module('core.beer-retriever').
factory('Beer', ['$resource',
($resource) => {
return $resource('https://www.xxxxxxxxx.com/v2/beers', {}, {
query: {
method: 'GET',
isArray: true
},
});
},
]);
私はジャスミンと次のテストを作成しました:
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();
}));
});
最初2つのテストは成功ですが、3番目のテストは失敗します:
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)
問題がどこでわからないのですかです。誰も同じような問題を抱えていますか?前もって感謝します!
あなたは$ httpBackendをフラッシュされていません。 – estus
どういう意味ですか? – Anto
模擬応答を有効にするには$ httpBackend.flush()が必要です。 – estus