$ resource-wrapping 서비스에 대한 간단한 단위 테스트가 있습니다. 나는 7 가지 항목의 배열을 반환하도록 httpBackend를 조롱하고 설정했습니다. 내가 테스트를 실행하면, 4 개 항목이 반환되었음을 없습니다 7보고 :httpBackend를 사용한 재스민 테스트가 예상 결과를 반환하지 않습니다.
기능 (A1, A3, A2를, A4) {...}
로 4 예상 7.
다음은 내 서비스 내 사양입니다
=== 서비스 ===
/* original
angular.module('TeamSportApp')
.factory('LedgerService', function ($resource) {
var Ledgers = $resource("/rest/api", { id: '@id'},
{
allLedgers : { method: 'GET', isArray: true},
postTransaction : { method: 'POST'},
removeTransaction : { method: 'DELETE'}
});
return Ledgers;
})*/
/* Fixed */
.factory('LedgerService', function ($resource) {
var Ledgers = $resource("/rest/api/:id", { id: '@id' },
{
allLedgers : { method: 'GET', isArray: true},
postTransaction : { method: 'POST'},
removeTransaction : { method: 'DELETE'}
});
return Ledgers;
})
})
=== 사양 ===
var ledgerArray = [
{id:1, name:"Master Ledger"},
{id:2, name:"User1 Ledger"},
{id:3, name:"User2 Ledger"},
{id:4, name:"User3 Ledger"},
{id:5, name:"User4 Ledger"},
{id:6, name:"User5 Ledger"},
{id:7, name:"User6 Ledger"}
];
ddescribe('Ledger service test', function(){
var ledgers, httpBackend;
beforeEach(module('TeamSportApp','ngResource'));
beforeEach(inject(function ($injector) {
ledgers = $injector.get("LedgerService");
httpBackend = $injector.get("$httpBackend");
}));
afterEach (function() {
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
/* ORIGINAL ERROR
it('gets a list of ledgers', function() {
httpBackend.when('/rest/api').respond(ledgerArray);
var result = ledgers.allLedgers;
console.log(result);
expect(result.length).toBe(4);
//httpBackend.flush();
});*/
/* All fixed using angular1.2.14 per [this][1] */
it('gets a list of ledgers', function() {
httpBackend.expectGET('/rest/api').respond(ledgerArray);
var result = ledgers.allLedgers();
httpBackend.flush();
expect(result.length).toBe(7);
});
it('gets a single ledger', function() {
httpBackend.expectGET('/rest/api/2').respond(singleLedger);
var result = ledgers.get({id:2});
httpBackend.flush();
console.log(result);
expect(result.name).toBe(singleLedger.name);
});
});
사용'httpBackend.expectGET() 대신 .when'의') (응답 ()'...와'.flush()'가 예상 결과 앞에 나타난다. – doodeec
왜'httpBackend.flush();'가 주석 처리되고'expect (result.length) .toBe (4); . 오류가 발생했을 때 '7'이라고 생각합니다. – glepretre
나는 당신의 추천을 시도했다; 이전 오류와 같은 오류 : {오류 : 만족하지 못하는 요청 :/사용자/phaggood/Desktop/Dropbox/Project/Current/Incubator/mobileapps/dreamfactory/teamsport/test/js/angular-mocks의 GET/rest/api. js (줄 1488) } flush() 주석 처리에서 "오류 : 플러시 요청이 없습니다." –