【发布时间】:2020-06-27 13:49:18
【问题描述】:
有没有办法在 Angular 中使用“测试库”框架来测试私有方法或声明?
这是我的代码:
priave name = "somename"
private setLang(url: string, fetch: boolean) {
switch (url) {
case '/SSB/mngt':
this.SSB.Id = 'newSSb';
this.pageId = 'ManageEvent';
break;
case '/SSB/mngt/add':
this.SSB.Id = 'newSSb';
this.pageId = 'ManageEventAdd';
break;
case '/SSB/mngt/view':
this.SSB.Id = 'newSSb';
this.pageId = 'ManageEventView';
break;
case '/SSB/mngt/approve':
this.SSB.Id = 'newSSb';
this.pageId = 'ManageEventApprove';
break;
default:
this.SSB.Id = 'setupConfig';
this.pageId = 'ViewProgMgmt';
break;
}
this.data = [];
this.data.push(this.selectedLang);
this.data.push(this.SSB.Id);
this.data.push(this.pageId);
this.data.push(fetch);
this.langId.emit(this.data);
}
私有name 声明和setLang 方法都不可用,有规范文件。什么是正确的处理方式。看来,除非我为我的两个私有声明编写测试用例,否则我无法达到 100% 的覆盖率。
【问题讨论】:
-
你不直接测试私有方法。通过他们的公共 API 进行测试。这不应该阻止您获得高水平的覆盖率,因为私有方法应该作为公共交互的结果被调用(如果不是,它们的意义何在?)
-
但我的 jest.js 显示错误,例如存在私人偏角的位置。这里我的
setLang连接到路由器 -
我不明白你想说什么。
-
我在私有方法和声明下得到
uncovered lines -
根据什么? 是否在您当前进行的测试期间它们会被调用?给minimal reproducible example。
标签: angular angular-test angular-testing-library testing-library