#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. Пожалуйста, дайте мне знать, если потребуется какая-либо дополнительная информация. Любая помощь или указания будут действительно оценены.
Комментарии:
1. Есть какие-нибудь успехи с этим?
2. Пока нет. На данный момент я использую только toHaveBeenCalled() вместо toHaveBeenCalledWith() в качестве обходного пути. 🙁