【问题标题】:TypeError: undefined is not an object (evaluating 'res[0].id')TypeError: undefined is not an object (评估 'res[0].id')
【发布时间】:2023-03-25 13:15:01
【问题描述】:

我正在尝试模拟后端服务以进行单元测试。下面是代码服务

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);
}

下面是我的 Jasmine 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: undefined is not an object (evalating 'res[0].id')”。知道这里有什么问题吗?请帮忙!!

【问题讨论】:

  • 这意味着 res[0] 是未定义的,因此它不是对象,因此您无法访问未定义的属性 id
  • 我不确定为什么没有返回响应 "{ body: '[{"id": "4"}]' }??

标签: angular karma-jasmine


【解决方案1】:

找到解决方案:我的响应正文格式不正确。

【讨论】:

  • 请在您的回答中添加更多细节并接受它,或者删除您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
  • 2016-09-25
  • 2020-09-28
  • 2021-01-06
  • 2020-06-11
  • 2021-09-03
  • 1970-01-01
相关资源
最近更新 更多