Ошибка Lint (ожидалось 2 аргумента, но получен 1) при тестировании метода window.scrollBy() в Jasmine после обновления Angular

#angular #typescript #jasmine #karma-jasmine

#угловатый #машинописный текст #jasmine #карма-jasmine

Вопрос:

При обновлении до Angular 11 также была обновлена пара других пакетов, таких как jasmine-core. Из-за чего при выполнении команды ‘npm run test’ возникают различные проблемы с ворсом, поскольку они сделали «типы» более строгими.

Одна из проблем связана с методом 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. Пожалуйста, дайте мне знать, если потребуется какая-либо дополнительная информация. Любая помощь или указания будут действительно оценены.

https://github.com/HimanshuGoel/scrollByIssue

Комментарии:

1. Есть какие-нибудь успехи с этим?

2. Пока нет. На данный момент я использую только toHaveBeenCalled() вместо toHaveBeenCalledWith() в качестве обходного пути. 🙁