Как при использовании Enzyme в тестировании реакт-компонентов вытащить содержимое тега?
Метод find() возвращает почему-то пустой объект {}. В доках и в примерах никто чистый find не использует, всегда find('tag').length(), почему? Ну и при следующем тесте ошибка из-за пустого received:
const wrapper = mount(<Settings/>);
expect(wrapper.find('h2')).toBe('Настройки')
При этом console.log(wrapper.debug()) выводит дерево. Также тесты валятся из-за пустого received при попытке достать что-то из состояния компонента:
const wrapper = mount(<Settings/>);
wrapper.state('param').toEqual(somedata)
Ошибок в первой ситуации не возникает, если не использовать enzyme:
act(() => {
ReactDOM.render(<Settings/>, container);
});
const label = container.querySelector('h2');
expect(label.textContent).toBe('Настройки');
Но как без enzyme обратиться к состоянию компонента не ясно. Как решить проблему с тем, что find и обращение к state через enzyme не работает или можно ли это как-то сделать без него?
Ответы (1 шт):
Автор решения: 8Irbis8
→ Ссылка
Нашла два варианта:
expect(wrapper.find('h2').text()).toBe('Настройки')
expect(wrapper.contains(<h2>Настройки</h2>')).toBe(true)