【发布时间】:2021-11-04 16:20:57
【问题描述】:
我正在创建一个 Angular 应用程序并且我正在学习单元测试并且我想测试某些方法,但是我无法测试该函数是否进入了 if 语句。我不知道如何强迫它。你能教我怎么做吗?这是函数:
currentRoute(): void {
const router: Router = this.injector.get(Router);
router.events.subscribe((val) => {
if (val instanceof NavigationEnd) {
this.checkMenuLinks(val);
}
});
}
如果我运行测试覆盖,我会得到所有红色的 if 语句,因为未经测试。你能告诉我如何实现这一目标吗?非常感谢。
【问题讨论】:
-
这与您使用的测试工具无关,更多的是与您在测试中导致发生的场景有关。您应该问自己为什么在 if 语句中编写代码 - 它解决了什么情况?虽然代码覆盖率是关于代码的,但测试应该是关于行为的。
-
这是 Angular 中的一个常见测试场景,默认情况下,如果没有额外的努力,路由不会发生(在下面添加了一些细节)
标签: angular unit-testing testing karma-jasmine jasmine2.0