Тест Jest прерывается, когда компонент имеет логику манипулирования DOM - PullRequest
0 голосов
/ 20 января 2020

Я тестирую свое приложение React с использованием Jest и Enzyme. Я сталкиваюсь с проблемой, когда у тестируемого компонента есть логика манипуляции DOM c, мои тесты прерываются.

Например, вот хук компонента, который мне нужно протестировать:

componentDidMount() {
  document.getElementById('complete').style.display = 'block';
}

При попытке смонтировать этот компонент я столкнулся с приведенной ниже ошибкой:

TypeError: Cannot set property 'display' of undefined

Я погуглил и обнаружил, что мне нужно добавить документ в мои глобалы в шутку. Больно то, что мне также нужно определить каждое такое свойство, используемое в приложении в документе, следующим образом:

const mockUpObject = {
    focus: () => null,
    style:{
        display: ''
    }
};
global.document.getElementById = jest.fn(() => mockUpObject);

Зачем нам это нужно, когда по умолчанию jest работает в среде jsdom и, следовательно, имитирует среда DOM, как если бы вы были в браузере. Есть ли более чистый способ сделать эту работу?

...