Тестирование ScrollIntoView в Jest - PullRequest
1 голос
/ 15 марта 2019

С функцией, которая использует scrollIntoView

export const scrollDown = () => {
    document.querySelector('.bottom').scrollIntoView({ 
        behavior: 'smooth' 
    });
}

У меня есть тест, который выглядит следующим образом

describe('scrollDown', () => {
    let scrollIntoViewMock = jest.fn();
    window.HTMLElement.prototype.scrollIntoView = scrollIntoViewMock;
    scrollDown()
    expect(scrollIntoViewMock).toBeCalled();
})

Но проверка завершается с ошибкой TypeError: Невозможно установить свойство 'scrollIntoView' из неопределенного

Тест был из другого SO-ответа на вопрос теста scrollIntoView. Любая помощь будет оценена.

1 Ответ

1 голос
/ 16 марта 2019

Вам необходимо добавить HTMLElement с классом bottom к document:

const scrollDown = () => {
  document.querySelector('.bottom').scrollIntoView({ 
      behavior: 'smooth' 
  });
}

test('scrollDown', () => {
  document.body.innerHTML = '<div class="bottom"></div>';
  const scrollIntoViewMock = jest.fn();
  HTMLElement.prototype.scrollIntoView = scrollIntoViewMock;
  scrollDown();
  expect(scrollIntoViewMock).toBeCalledWith({ behavior: 'smooth' });  // Success!
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...