【发布时间】:2020-12-24 12:53:48
【问题描述】:
我正在为我的一个应用程序编写一个单元测试,其中规范已通过。但是看到代码覆盖率后,有些部分似乎没有被覆盖,如下图:
this.columnDefs = [
{
translateKey: 'DEVICES.LIST.SNO',
width: 100,
resizable: false,
sortable: false,
suppressSizeToFit: true,
floatingFilter: false,
valueGetter: (args) => this.getId(args),
checkboxSelection: (params) => {
return params.columnApi.getRowGroupColumns().length === 0;
},
headerCheckboxSelection: (params) => {
return params.columnApi.getRowGroupColumns().length === 0;
},
},
...gridColumns,
];
其中valueGetter、CheckboxSelection都没有覆盖
组件文件:
export class ListComponent implements OnInit, OnDestroy {
columnDefs: DeviceColumns[];
defaultColumnDefs: any;
gridApi: any;
columnApi: any;
constructor() {}
ngOnInit() {
this.initializeColumns();
}
initializeColumns() {
this.columnDefs = [
{
translateKey: 'DEVICES.LIST.SNO',
width: 100,
resizable: false,
sortable: false,
suppressSizeToFit: true,
floatingFilter: false,
valueGetter: (args) => this.getId(args),
checkboxSelection: (params) => {
return params.columnApi.getRowGroupColumns().length === 0;
},
headerCheckboxSelection: (params) => {
return params.columnApi.getRowGroupColumns().length === 0;
},
},
];
this.columnDefs.forEach((columnDef) => {
columnDef.floatingFilter = this.hasFloatingFilter;
});
this.columnDefs = map(this.columnDefs, (columnDef) => {
return extend({}, columnDef, { headerValueGetter: this.localizeHeader.bind(this) });
});
}
getId(args: any): any {
return (
this.pagination.per_page * this.pagination.prev_page + parseInt(args.node.rowIndex, 10) + 1
);
}
OnGridReady(params) {
this.gridApi = params.api;
this.columnApi = params.columnApi;
}
ngOnDestroy() {
this.subscriptions.unsubscribe();
}
}
我需要帮助来执行这些箭头函数的代码覆盖。
【问题讨论】:
-
显示类的代码,
columnDefs是服务还是组件的属性? -
@slideshowp2 我已经添加了组件,你可以检查一下
-
代码太多,能不能创建一个最小的、可重现的代码?专注于测试
columnDefs内部的箭头函数。 -
@slideshowp2 你可以检查一下它现在更新了组件文件
标签: angular typescript unit-testing jasmine karma-jasmine