Javascript 单元测试HttpClient-角度/卡玛

Javascript 单元测试HttpClient-角度/卡玛,javascript,angular,karma-jasmine,Javascript,Angular,Karma Jasmine,我正在阅读一些关于单元测试的文章,并找到了一些非常有用的例子。我遇到的大多数示例似乎都是对一个函数进行单元测试,该函数使用AngularHttpClient执行某些操作,大多数示例如下所示: it('should return an Observable<User[]>', () => { const dummyUsers = [ { login: 'John' }, { login: 'Doe' } ]; service.ge

我正在阅读一些关于单元测试的文章,并找到了一些非常有用的例子。我遇到的大多数示例似乎都是对一个函数进行单元测试,该函数使用Angular
HttpClient
执行某些操作,大多数示例如下所示:

it('should return an Observable<User[]>', () => {
    const dummyUsers = [
      { login: 'John' },
      { login: 'Doe' }
    ];

    service.getUsers().subscribe(users => {
      expect(users.length).toBe(2);
      expect(users).toEqual(dummyUsers);
    });

    const req = httpMock.expectOne(`${service.API_URL}/users`);
    expect(req.request.method).toBe("GET");
    req.flush(dummyUsers);
  });
如何在Karma中对调用HttpPost或HttpGet的函数进行单元测试

尝试:

  it('should get current user', async () => {
    const result = service.getCurrentUser();
    console.log('RESULT', result);
    const req = httpMock.expectOne(`/api/me`);
    const test = req.flush({test: 'ing'});
    console.log('REQUEST', test);

    expect('a').toEqual('a');
  });

我想我是想得太多了,但是我通过使用
使它工作起来。然后
而不是像在正常(非测试)调用中那样使用
等待

  it('should get current user', async () => {
    const result = service.getCurrentUser();
    console.log('RESULT', result);
    const req = httpMock.expectOne(`/api/me`);
    const test = req.flush({test: 'ing'});
    console.log('REQUEST', test);

    expect('a').toEqual('a');
  });
it('should get current user', async () => {
    const response = new CustomResponseClass();
    response.success = true;
    response.error = null;
    const user = new User();
    user.userId = 1;
    user.name = 'Test User';
    response.data = user;
    service.getCurrentUser().then( _user => {
      console.log('USER', _user);
      // TODO: Some more unit tests here...
    });
    const req = httpMock.expectOne('/api/me');
    expect(req.request.method).toEqual('GET');
    req.flush(response);
  });