2016-08-15 5 views
0

Я пытаюсь издеваться над базовым сервисом для модульного тестирования. Ниже код услугаТипError: undefined не объект (оценка 'res [0] .id')

getFreightById(id: number): Promise <Freight[]> { 

    let searchParams = new URLSearchParams(); 
    searchParams.set('id', id.toString()); 
    return this.http.get("app/freight/getById", { 
      search: searchParams 
     }) 
     .toPromise() 
     .then(this.extractData) 
     .catch(this.handleError); 
} 

Ниже мой Жасмин Unit тест:

describe('FreightService',() => { 
    beforeEachProviders(() => [ 
     BaseRequestOptions, 
     MockBackend, 
     FreightService, 
     provide(Http, { 
     useFactory: (backend: ConnectionBackend, 
        defaultOptions: BaseRequestOptions) => { 
     return new Http(backend, defaultOptions); 
     }, deps: [MockBackend, BaseRequestOptions]}), 

    ]); 

    describe('getFreightById',() => { 
    it('retrieves using the Freight ID', 
     inject([FreightService, MockBackend], fakeAsync((freightService, backend) => { 
     var res; 
     expectURL(backend, 'app/freight/getById?id=4'); 
     freightService.getFreightById(4).then((_res) => { 
      res = _res; 
     }) 
     tick(); 
     expect(res[0].id).toBe(4); 
     })) 
    ); 
    }); 

    // sets up an expectation that the correct URL will being requested 
    function expectURL(backend: MockBackend, url: string) { 
    backend.connections.subscribe(c => { 
     expect(c.request.url).toBe(url); 
     let response = new ResponseOptions({ 
        body: '[{"id": "4"}]' }); 
     c.mockRespond(new Response(response)); 
    }); 
    } 
}) 

Я получаю ошибку "TypeError: не определен не является объект (оценивающий 'Рез [0] .id')" , Любая идея, что здесь неправильно? Пожалуйста помоги!!

+0

это означает, что res [0] не определено, поэтому его не является объектом, поэтому вы не можете получить доступ к свойству ** id ** неопределенного –

+0

Я не уверен, почему ответ «{body: '[{" id ":" 4 "} ] '} не возвращается? –

ответ

0

Найдено результатов: Форма ответа на мой ответ неверна.

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