У меня есть очень простой модульный тест для моего сервиса $resource-wrapping. Я издевался над httpBackend и настроил его на возврат массива из семи элементов. Когда я запускаю тест, он сообщает, что было возвращено 4 элемента, а не 7:
функция (а1, а2, а3, а4) { ... }
Ожидал, что 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().respond()
вместо.when()
... и.flush()
перед ожидаемым результатом - person doodeec   schedule 04.04.2014httpBackend.flush();
комментируется, аexpect(result.length).toBe(4);
. Я думаю, это было7
, когда вы получили ошибку. - person glepretre   schedule 04.04.2014