开发者问题收集

Angular 8 - 如何模拟从服务返回的主题

2020-03-13
368

这是服务部分:

@Injectable()
export class PinnedTileStateService {
    private pinnedTileStateSubject: Subject<number> = new Subject();

    public getPinnedTileState(): Subject<number> {
        if (this.pinnedTileStateSubject) {
            return this.pinnedTileStateSubject;
        }
    }
}

这是组件部分:

 ngOnInit(): void {
        this.pinnedTileStateService.getPinnedTileState().subscribe((pinnedTileId) => {          
               //anything          
        });
    }

我想测试 .spec.ts 文件中的 ngOnInit() 方法。我尝试了几种方法,例如模拟主题,但没有成功。

可以帮我吗,如何测试返回主题的 ngOnInit getPinnedTileState 方法?

非常感谢 /S

1个回答

尝试以下操作:

spyOn(pinnedTileStateService,'getPinnedTileState').and.returnValue(Observable.of(// whatever shall be emited));

如果您想测试 onInit 行为,您必须在 beforeEach 块中设置间谍,因为您想在组件初始化期间设置它。

mamichels
2020-03-13