在升级Angular 11时,其他一些包(例如jasmine-core)也已经升级。因此,在运行“npm run test”命令时会导致各种Lint问题,因为它们使“types”更加严格。
其中一个问题是window.scrollBy()方法。根据类型定义文件(lib.dom.ts),它可以有2个重载实现,如下所示-
其中一个问题是window.scrollBy()方法。根据类型定义文件(lib.dom.ts),它可以有2个重载实现,如下所示-
scrollBy(options?: ScrollToOptions): void;
scrollBy(x: number, y: number): void;
但是在编写单元测试用例时,会出现以下 Lint 错误 -
it('should scroll down by 10 units', fakeAsync(() => {
service.scrollDown(10);
expect(window.scrollBy).toHaveBeenCalledWith({
top: 10,
left: 0,
behavior: 'smooth',
});
}));
看起来它只考虑了第二个重载实现,而没有考虑我们也可以只传递参数即“选项”的第一个重载。尽管测试用例被正确通过了。
我在下面的Github链接中创建了一个最小化的复制示例。如果需要任何额外的信息,请告诉我。非常感谢任何帮助或指针。
scrollTo
函数的问题也是一样。唯一解决该问题的方法是添加// @ts-ignore
,但这不是一个好的解决方案。顺便说一下,这不是一个代码风格问题,而是 TypeScript 编译错误。 - JSON Derulo