簡體   English   中英

TypeError:undefined不是對象(評估'res [0] .id')

[英]TypeError: undefined is not an object (evaluating '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);
}

以下是我的茉莉花單元測試用例:

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:未定義不是對象(正在評估'res [0] .id')”。 知道這里有什么問題嗎? 請幫忙!!

找到的解決方案:我的回復正文格式不正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM