使用钩子时,开玩笑/酶测试会引发错误



我有一个使用USESTATE钩的简单反应组件。该组件在应用程序中正常工作,但是我的嘲笑测试给我带来了错误"钩子只能在功能组件的正文内调用"。据我所知,我正在正确地打电话给我们,并且在运行应用程序时效果很好。

我使用的是React和React-Dom的16.8.4版本,如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;

这是相应的开玩笑测试(使用酶):

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));
});

我读过一些酶不适用于钩子的来源,但是我有一个没有问题的同事。我已经比较了我们的软件包。

看来我太渴望了。截至目前(2019-03-12)酶根本不支持React Hooks。虽然我能够通过使用MOUNT()而不是浅层()来运行测试,但似乎还有其他问题,我不知道何时酶支持这些功能。我将回到使用早期版本的React并错过钩子,直到酶支持它们,或者我们决定停止使用酶。

我尝试了此代码,它使用了完全相同的反应蚂蚁版本。看起来您有与特定酶版本或酶配置有关的问题。

我用"酶":"^3.9.0"one_answers"酶 - 适应器反射16":"^1.10.0"

尝试了一下。
import React from 'react';
import { shallow } from 'enzyme';
import * as Enzyme from "enzyme";
import Adapter from 'enzyme-adapter-react-16';
import {ExampleComponent} from './App';
Enzyme.configure({ adapter: new Adapter() });
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));
});

相关内容

  • 没有找到相关文章

最新更新