Angular 中 .sort() 函数的 Karma-Jasmine 单元测试故障排除
Unit Testing Troubleshoot in Karma-Jasmine for .sort() function in Angular
我有一段代码写在Angular:
this.selectedData.sort((a, b) => {
if (query === 'poll' && (a[query] === null || b[query] === null)) {
return a[query] === null ? 1 : -1;
} else if (query === 'submit') {
return moment(a[query]).isBefore(moment(b[query])) ? 1 : -1;
} else {
return b[query].localeCompare(a[query]);
}
});
我尝试为排序函数编写一个 callFake,如下所示:
spyOn(selectedData, 'sort').and.callFake((a, b) => {
expect(query).toBe('poll');
});
但是,代码覆盖显示,它没有进入排序功能块。还有其他编写测试用例的方法吗?我也尝试使用 callThrough() 并且它显示相同的结果。
spyOn
将间谍安装到现有对象上,但它不调用指定的方法。通过使用 and.callFake
链接间谍,对间谍的所有调用都将委托给提供的函数而不是对象的方法。你需要的是...
// Install spy (without delegating)
spyOn(selectedData, 'sort');
// Invoke the object's method
const result = selectedData.sort(...);
// Compare actual result with expected result
expect(result).toBe(<expectedResult>);
我有一段代码写在Angular:
this.selectedData.sort((a, b) => {
if (query === 'poll' && (a[query] === null || b[query] === null)) {
return a[query] === null ? 1 : -1;
} else if (query === 'submit') {
return moment(a[query]).isBefore(moment(b[query])) ? 1 : -1;
} else {
return b[query].localeCompare(a[query]);
}
});
我尝试为排序函数编写一个 callFake,如下所示:
spyOn(selectedData, 'sort').and.callFake((a, b) => {
expect(query).toBe('poll');
});
但是,代码覆盖显示,它没有进入排序功能块。还有其他编写测试用例的方法吗?我也尝试使用 callThrough() 并且它显示相同的结果。
spyOn
将间谍安装到现有对象上,但它不调用指定的方法。通过使用 and.callFake
链接间谍,对间谍的所有调用都将委托给提供的函数而不是对象的方法。你需要的是...
// Install spy (without delegating)
spyOn(selectedData, 'sort');
// Invoke the object's method
const result = selectedData.sort(...);
// Compare actual result with expected result
expect(result).toBe(<expectedResult>);