我有一个函数订阅来自NGRX商店的响应,然后使用提供的变量来更改消息。
如何在变量更新时测试消息是否发生变化?
getData() {
this.service.getPreferences().subscribe(res => {
this.mypreference$ = res.mypreference;
});
if (this.mypreference$ == false) {
(this.mypreferenceType = 'noPreference');
} else {
(this.mypreferenceType = 'Preference');
}
}
getPreferences() { return this.store.select('user').map((state: User) => state); }
答案 0 :(得分:0)
要进行您正在寻找的测试类型,您只需要存根服务的getPreferences方法。所以这样的事情应该测试函数中的一个路径:
it('getData should set mypreferenceType to noPreference when getPreferences returns false', async(() => {
let service = TestBed.get(Service);
let component = TestBed.createComponent(Component).componentInstance;
spyOn(service, 'getPreferences').and.returnValue(Observable.of(false));
component.getData();
expect(component.mypreferenceType).toEqual('noPreference');
}));
然而正如mickaelw在评论中所说,我很确定你会发现测试会失败。 if语句将在subscribe函数中的代码之前运行。