2016-03-11 2 views
1

Я не новичок в тестовом мире, так как много раз работал в TDD с использованием мокконов sinon chai и nodejs.Единичное тестирование Angularjs и тайм-аут httpbackend

Я действительно немного обеспокоен тестированием Angularjs и тем, как он работает.

На самом деле, мне нужно проверить простейший метод, который я могу сделать с этим:

/** @test {HateoasService#loadRessource}*/ 
describe('HateoasService', function() { 

    let service = null; 
    let remoteBackend = null; 
    beforeEach(angular.mock.module('app')); 

    beforeEach(inject((HateoasService, $httpBackend) => { 
    remoteBackend = $httpBackend; 
    service = HateoasService; 
    })); 

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

    it('should be resolved a promise with status 200',() => { 

    remoteBackend.when('GET', 'http://google.fr') 
     .respond(200, {}); 

    service.loadRessource('http://google.fr').then((res) => { 
     expect(res.status).toEqual(200); 
     remoteBackend.flush(); 
    }); 
    }); 

}); 

Это должно покрыть этот код:

loadRessource(ressource) { 
    return this.http.get(ressource); 
    } 

Однако, кажется, что я м что-то не хватает, так как я m возникли проблемы с httBackend flushing: Ошибка: Нераспределенные запросы: 1.

Можете ли вы помочь мне сделать этот тест работоспособным?

ответ

0

Функция, являющаяся вторым аргументом it, нуждается в параметре, чтобы сообщить мокко о его асинхронном действии. После промывки вызовите обратный вызов.

it('should be resolved a promise with status 200', done => { 

remoteBackend.when('GET', 'http://google.fr') 
    .respond(200, {}); 

service.loadRessource('http://google.fr').then((res) => { 
    expect(res.status).toEqual(200); 
    remoteBackend.flush(); 
    done(); 
}); 

});

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