Angular 7(RxJs6)-单元测试-如何检查服务是否返回throwError?

时间:2019-03-13 10:13:08

标签: angular karma-jasmine rxjs6

我要测试throwError部分。 OK测试还可以。我想测试ID是否为getById的{​​{1}},0返回错误(getById

我的服务

throwError

}

我的单元测试:

getById(fooId): Observable<Foo> {
  return this.getAll().pipe(mergeMap(foos => {
    const foo: Foo= foos.find(({id}) => id === fooId);
    if (foo) {
      return of(foo);
    } else {
      throwError('foo not found');
    }
  }
));

我遇到此错误:

it('...', () => {

    service.getById(0).subscribe(() => {
      fail('expected error');
    }, (error) => {
      expect(error).toBe('foo not found');
    });

    const res= httpMock.expectOne({ url: '/api/admin/foo', method: 'GET' });
    res.flush(
      [
        {
          'id': 1,
          'name': 'foo1'
        },
        {
          'id': 2,
          'name': 'foo2'
        }
      ]);
  });

1 个答案:

答案 0 :(得分:0)

我改变

throwError('Spada not found');

通过

return throwError('Spada not found');