У меня есть простой компонент React, который использует хук useState. Этот компонент работает в приложении правильно, но мой тест Jest выдает ошибку «Хуки могут быть вызваны только внутри тела функционального компонента». Насколько я могу судить, я правильно вызываю useState, и, опять же, он отлично работает, когда я запускаю приложение.
Я использую версию 16.8.4 для react и react-dom, что подтверждается npm ls.
Вот компонент целиком:
import React, {useState} from 'react';
import './ExampleComponent.css';
function ExampleComponent(props) {
const [count, setCount] = useState(0);
const handler = () => setCount(count + 1);
return (
<div className='example-component'>
<span>This component is a test</span>
<button onClick={handler}>Test</button>
<input readOnly={true} value={count}></input>
</div>
);
};
export default ExampleComponent;
А вот и соответствующий тест Jest (с использованием Enzyme):
import React from 'react';
import ExampleComponent from './ExampleComponent';
describe('<ExampleComponent />', () => {
const options = {
targetElementId: 'fake-element-id'
};
const wrapper = shallow(<ExampleComponent options={options} />);
it('renders a div', () => expect(wrapper.find('div').exists()).toBe(true));
});
Я читал в некоторых источниках, что Enzyme не работает с крючками, но у меня есть коллега, у которого нет проблемы. Я сравнил наши файлы package.json и конфигурации веб-пакетов и не нашел различий.
mount
вместоshallow
? - person zsgomori   schedule 11.03.2019