Я хочу протестировать компонент, у которого есть подписка на тему в сервисе.
Компонент подписывается:
let x: string[] = [];
public ngAfterViewInit(): void {
this.subscription = this.service.observer$.subscribe((data: any) => {
this.x = data.value;
...
}
}
Сервис имеет свойство Subject:
public observer$: Subject<any>;
В тестовом примере я пытаюсь настроить это следующим образом:
beforeEach(() => {
fixture = TestBed.createComponent(Component);
component = fixture.componentInstance;
service = fixture.debugElement.injector.get(Service);
fixture.detectChanges();
});
it('should get a subscription event', () => {
const response: any[] = [];
service.observer$ = new Subject<any>();
service.observer$.next(['some content']);
fixture.detectChanges();
expect(component.x.length).toBeGreaterThan(0);
});
Это не работает. х остается пустым.
Может кто-нибудь предоставить правильный способ проверить это? Я видел несколько примеров, где сервис предоставляет метод для наблюдателя.new (), когда тестировщик следит за этим. Но нет примера, как заставить это работать.