Angular 7 (RxJs6) - Модульные тесты - Как проверить, возвращает ли сервис throwError? - PullRequest
0 голосов
/ 13 марта 2019

Я хочу проверить часть throwError.ОК, тест в порядке.Я хочу проверить, если использовать getById с неправильным идентификатором 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'
        }
      ]);
  });

У меня есть эта ошибка:

TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.

1 Ответ

0 голосов
/ 13 марта 2019

меняю

throwError('Spada not found');

по

return throwError('Spada not found');
...