【发布时间】:2018-12-26 16:13:18
【问题描述】:
我在 Angular 6 中进行单元测试,但在测试这个 IF 分支时遇到了问题。我用它来观察屏幕有多大,从而决定要显示多少列。我正在努力解决如何在ngOnInit() 中的订阅中进行测试。
这个
this.watcher = this.media.subscribe((change: MediaChange) =>....
代码覆盖率表明它没有进入这些服务的if 和else。这是我能做的最好的。 Media Change 服务会不断查看屏幕尺寸,以决定它会在表格中显示多少列
ngOnInit() {
this.watcher = this.media.subscribe((change: MediaChange) => {
this.activeMediaQuery = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : '';
this.changeMqAlias = change.mqAlias;
if (this.changeMqAlias == this.changeSize.XS) {
this.displayedColumns = ['job', 'name', 'totalValue'];
} else {
this.displayedColumns = ['internalId', 'DateOfPublication', 'alias', 'job', 'name', 'totalValue'];
}
return change.mqAlias;
});
}
it('should create', () => {
fixture.whenStable().then(() => {
expect(component).toBeTruthy();
});
});
it('should create which 3 columns in mat table', () => {
fixture.whenStable().then(() => {
component.changeMqAlias = 'xs';
expect(component).toBeTruthy();
});
});
});
【问题讨论】:
-
真的不清楚你在问什么。如果您编写了规范,请发布您自己尝试过的代码。 StackOverflow 期待您 try to solve your own problem first,因为您的尝试有助于我们更好地了解您想要什么。请编辑问题以说明您在Minimal, Complete, and Verifiable example 中遇到的具体问题。
-
希望我已经澄清了,谢谢
标签: javascript angular testing jasmine angular6