使用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();

这是访问私有方法的一种变通方法,否则您可以使用调用这些私有方法的方法来测试它们。

相关内容

  • 没有找到相关文章