как проверить наблюдаемое в сервисе - PullRequest
0 голосов
/ 11 октября 2018

Я создаю модульный тест для своего сервиса:

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 ]

0 голосов
/ 11 октября 2018

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

service.element$
.pipe(filter(el => !!el ))
.subscribe(element =>
    expect(element.toEqual('test');
) 
0 голосов
/ 11 октября 2018

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

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