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>);