Enzyme 期望配置一个适配器

新手上路,请多包涵

我通过 create-react-app 创建了一个新的 React 应用程序,我想为我在应用程序中创建的名为“MessageBox”的组件编写一个单元测试。这是我写的单元测试:

 import MessageBox from "../MessageBox";
import { shallow } from 'enzyme';
import React from 'react';

test('message box', () => {
   const app = {setState: jest.fn()};
   const wrapper = shallow(<MessageBox app={app}/>);
   wrapper.find('button').at(0).simulate('click');
   expect(app.setState).toHaveBeenLastCalledWith({modalIsOpen: false});
});

我还在“src”文件夹下添加了一个名为“setupTests.js”的文件,内容如下:

 import * as enzyme from 'enzyme';
import * as Adapter from 'enzyme-adapter-react-16';

enzyme.configure({ adapter: new Adapter() });

我通过以下方式运行它:

npm 测试

我得到了错误:

Enzyme 内部错误:Enzyme 需要配置适配器,但没有找到。要配置适配器,您应该调用 Enzyme.configure({ > adapter: new Adapter() })

你知道什么可以解决这个问题吗?

原文由 CrazySynthax 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 788
2 个回答

将其添加到您的测试用例文件中。

 import React from 'react';
import Adapter from 'enzyme-adapter-react-16';
import { shallow, configure } from 'enzyme';

configure({adapter: new Adapter()});
test('message box', ()=> {
     ...
})

原文由 GAJESH PANIGRAHI 发布,翻译遵循 CC BY-SA 4.0 许可协议

此外,如果您不想将 setupTests.js 文件导入到每个测试文件中,您可以将它放在 package.json 文件夹中:

   "jest": {
     "setupTestFrameworkScriptFile": "./test/setupTests.js" }

更新:

 Note: setupTestFrameworkScriptFile is deprecated in favor of setupFilesAfterEnv.

https://jestjs.io/docs/en/configuration

原文由 type_master_flash 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进