【发布时间】:2019-02-13 17:17:49
【问题描述】:
我想测试一个组件,它订阅了服务中的某个主题。
组件订阅:
let x: string[] = [];
public ngAfterViewInit(): void {
this.subscription = this.service.observer$.subscribe((data: any) => {
this.x = data.value;
...
}
}
服务具有主题属性:
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);
});
这不起作用。 x 保持为空。
谁能提供正确的测试方法?我看到了一些示例,其中该服务为observer.new() 提供了一种方法,然后测试人员会监视该方法。但是没有关于如何让它工作的例子。
【问题讨论】:
标签: angular rxjs observable karma-runner subject