Как проверить наблюдаемое в сервисе

Я создаю юнит-тест для моего сервиса:

private _element$: BehaviorSubject<string>;

element$: Observable<string>;

constructor() {

  this.element$ = new BehaviorSubject<string>('test');
  this.element$ = this._element$.asObservable();
}

И тест на это

let service;

beforeEach(() => {
  TestBed.configureTestingModule({
    imports: [
    ],
   });

  service = new TestService();
 });

 it('should give next object',
   async() =>{
     expect(service._element$.getValue()).toEqual('test') -> works
     service.element$.subscribe(element =>
          expect(element.toEqual('test')
     ) -> fails
 });

Наблюдаемое терпит неудачу, потому что "undefined не является функцией". Если я отлаживаю, я вижу, что это не может найти "обслуживание".

Где моя ошибка?

2 ответа

Тело теста должно быть параметром async функция, и есть некоторые опечатки:

it('should give next object',
   async(() => {
     expect(service.element$.getValue()).toEqual('test');
     service.element$.subscribe(element =>
          expect(element).toEqual('test')
     );
 }));

Попробуйте добавить фильтр (из rxjs) перед.subscribe

service.element$
.pipe(filter(el => !!el ))
.subscribe(element =>
    expect(element.toEqual('test');
) 
Другие вопросы по тегам