【发布时间】:2017-11-23 00:49:56
【问题描述】:
我有一个简单的函数可以做到这一点
ngOnInit() {
if (this.session.getToken()) {
this.isUserLogged = true;
}
this.loadingObserver = this.session.loadingObservable.subscribe(loading => this.isLoading = loading);
}
我的测试如下
it('Testing ngOnInit() ...', async(() => {
let spy = spyOn(services.session, 'getToken').and.returnValue('token');
services.session.loadingObservable.subscribe(any => expect(component.isLoading).toEqual(false));
component.ngOnInit();
expect(component.isUserLogged).toEqual(true);
expect(spy).toHaveBeenCalled();
}));
但在我的应用程序的代码覆盖范围内,订阅没有被覆盖。事实上,期待 false 也有效。
您对如何测试订阅有任何想法吗?
【问题讨论】:
-
我会检查是否为您找到了解决方案,但我觉得测试是否定义了订阅就足够了,或者您可能会触发 loadingObservable 将 isLoading 切换为 true 或 false。
-
仅测试订阅不会测试 isLoading 是否具有正确的值,这就是我卡住的地方。我认为只有订阅它才会允许断言,但它似乎没有......
标签: angular unit-testing typescript jasmine