document.getElementById (...). getElementsByTagName не является функцией - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь запустить тест, используя шутки и энзимы, но постоянно получаю следующую ошибку:

TypeError: document.getElementById(...).getElementsByTagName is not a function

или:

TypeError: Cannot read property 'getElementsByTagName' of null

.

componentDidUpdate(prevProps, prevState, snapshot) {
 var el = document.getElementById('myTable');
 var firstHeader =  document.getElementById('myTable').getElementsByTagName( 'thead' )[0].getElementsByTagName( 'tr' )[0].getElementsByTagName( 'th' )[0];

dragger.on('drop',(from, to, el) => {
 this.props.onHeaderDrop(
 document.getElementById('myTable').getElementsByTagName( 'thead' )[0].getElementsByTagName( 'tr' )[0].getElementsByClassName('handle')[from].getAttribute('id'),

Я пытался добавить следующее прямо перед монтированием моего компонента:

  const elementMock = { addEventListener: jest.fn() };
  jest.spyOn(document, 'getElementById').mockImplementation(() => elementMock);

Или, может быть, мне стоит добавить что-нибудь на мой реквизит: this.props.onHeaderDrop?

1 Ответ

0 голосов
/ 23 апреля 2019

попробуйте это ... добавить объект окна перед документом.

componentDidUpdate(prevProps, prevState, snapshot) {
 var el = window.document.getElementById('myTable');
 var firstHeader =  window.document.getElementById('myTable').getElementsByTagName( 'thead' )[0].getElementsByTagName( 'tr' )[0].getElementsByTagName( 'th' )[0];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...