Angular 如何使用“测试私有方法/声明”;“测试库”;
有没有办法在angular中使用“测试库”框架测试私有方法或声明 这是我的密码:Angular 如何使用“测试私有方法/声明”;“测试库”;,angular,angular-test,angular-testing-library,testing-library,Angular,Angular Test,Angular Testing Library,Testing Library,有没有办法在angular中使用“测试库”框架测试私有方法或声明 这是我的密码: priave name = "somename" private setLang(url: string, fetch: boolean) { switch (url) { case '/SSB/mngt': this.SSB.Id = 'newSSb'; this.pageId = 'ManageEvent';
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);
}
在spec文件中,private
name
声明和setLang
方法都不可用。正确的处理方法是什么。似乎,除非我为我的两个私有声明编写测试用例,否则我无法实现100%的覆盖率。我们不使用测试库测试私有方法,因为这些方法可能会更改,并且会无故中断您的测试。如果您想在这些行上覆盖代码,您必须通过HTML从外部对它们进行测试
这将确保如果实现细节随着时间的推移而改变,您的测试仍然会通过,并使您对所编写的代码充满信心。您不会直接测试私有方法。通过它们的公共API进行测试。这不应该阻止您获得高水平的覆盖率,因为私有方法应该作为公共交互的结果被调用(如果不是,它们的意义是什么?),但是我的jest.js显示了错误,比如私有偏差存在的地方。这里我的
setLang
连接到routerI我不明白你想说什么。我在私有方法和声明下得到了未覆盖的行?它们在您当前的测试期间是否被调用?给我一点时间,我很好。此问题与路由器事件有关,而不是与html有关。您能否显示/共享一个示例以测试ngOnInit
-上的路由器事件?