Как проверить наблюдаемое в сервисе
Я создаю юнит-тест для моего сервиса:
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');
)