2013-12-05 5 views
0

Я пытаюсь создать базовое тестовое покрытие созданной мной службы. Вот моя служба:Мой макет не возвращает никаких данных - Angularjs

App.factory('encounterService', function ($resource, $rootScope) { 
    return { 
    encounters: [], 
    encountersTotalCount: 0, 
    encountersIndex: 0, 
    resource: $resource('/encounters/:encounterId', {encounterId:'@encounterId'}, { 
     search: { 
     method: 'GET', 
     headers: { 
      'RemoteUser': 'jjjyyy', 
      'Content-Type': 'application/json' 
     } 
     } 
    }), 
    getMoreEncounters: function() { 
     var that = this; 
     that.resource.search({}, function(data) { 
     that.encountersTotalCount = data.metadata.totalCount; 
     _.each(data.encounters, function(encounter) { 
      that.encounters.push(encounter); 
     }); 
     that.busy = false; 
     that.offset += 10; 
     $rootScope.$broadcast('encountersFetched'); 
     }); 
    } 
    }; 
}); 

Это мой тест:

describe('encounterService', function() { 
    var _encounterService, httpBackend; 
    beforeEach(inject(function(encounterService, $httpBackend) { 
    _encounterService = encounterService; 
    httpBackend = $httpBackend; 
    var url = 'encounters'; 
    httpBackend.when('GET', url).respond([{}, {}, {}]); 
    })); 

    afterEach(function() { 
    httpBackend.verifyNoOutstandingExpectation(); 
    httpBackend.verifyNoOutstandingRequest(); 
    }); 

    it('should return a list of encounters', function() { 
    _encounterService.getMoreEncounters(); 
    httpBackend.flush(); 
    expect(_encounterService.encounters.size).toBe(3); 
    }); 
}); 

Мой тест работает, и моя служба звонит getMoreEncounters(). Внутри encounterService я должен установить некоторые метаданные и присвоить свои данные внутренней переменной. Это никогда не происходит. Вы можете увидеть ответ в тесте, но результаты не привязаны ни к чему. В чем проблема с моим кодом?

+0

Работает ли 'столкновение' вне вашего теста? Просто взглянув на этот код, он не выглядит так, как будто он должен работать вообще ... – tennisgent

+0

Да, он отлично работает. – jhamm

+0

Действительно? Я вижу пару вещей, которые, как я полагаю, должны вызывать ошибки JavaScript. 'ожидать (_encounterService.encounters.size) .toBe (3);' является одним из них. Массивы Javascript не имеют свойства '.size'. его '.length' ... – tennisgent

ответ

0

Как было отмечено выше, tennisgent:

Я вижу несколько вещей, которые я считаю, должен бросить JavaScript ошибки. expect(_encounterService.encounters.size).toBe(3); является одним из них. Массивы Javascript не имеют свойства .size. его .length.

Я получал 0 за size недвижимости, потому что его не было.

Смежные вопросы