angular - 使用 Angular 和 Jasmine/Karma 的私有方法进行测试和代码覆盖
问题描述
所以,我在我的按钮组件上得到了这些方法。
export class SidebarButtonComponent implements OnInit {
private subscribeToRouter(): void {
this.router.events.subscribe(route => {
if (route instanceof NavigationEnd) {
this.isSelected(route.urlAfterRedirects);
}
});
}
private isSelected(route: string): void {
if (this.checkRoute(route)) {
this.selected = true;
} else {
this.selected = false;
}
}
private checkRoute(route: string): boolean {
return route.includes(this.link);
}
}
我知道我无法访问我的规范文件上的私有方法,但是 Angular 的代码覆盖率说我没有覆盖它:
59.09% 语句 13/22 37.5% 分支 3/8 42.86% 函数 3/7 52.63% 行 10/19
测试这些私有测试的最佳方法是什么,或者至少在代码覆盖率中忽略它们?
解决方案
typescript 中的访问修饰符仅在编译时使用。你不能像这样直接访问它们
component.privateMethod(); // not accessible
但是您可以使用任何方式访问它们:
(component as any).privateMethod();
这是访问私有方法的一种解决方法,否则您可以使用调用这些私有方法的方法对其进行测试。
推荐阅读
- javascript - 渲染元素 onClick 事件,React JS
- android - tts 文件未从 Android 上的 api 29 或更高版本保存
- git - Bitbucket 服务器 API:查找分支的合并库
- typescript - 在 Serenity 平台中保存之前自动填充客户 ID 字段
- apache-spark - 如何在带有delemter |@|的spark sql中使用Split函数?
- arrays - 如何提取数组中的数字
- javascript - 从后端接收 JSON 时,删除了 long 的最后 2 位
- node.js - MongoDB无法在NodeJS的另一个文件中获取集合
- python - 为什么添加图例后我的 python 绘图代码运行如此缓慢?
- python - 分割算法