在 Karma + jasmine 中 enzyme 的 setup 文件应该写在什么地方

昨天将项目更新到 React v16.0 ,但是 CI 构建出现如下问题:

 Error:
              Enzyme Internal Error: Enzyme expects an adapter to be configured, but found none. To
              configure an adapter, you should call `Enzyme.configure({ adapter: new Adapter() })`
              before using any of Enzyme's top level APIs, where `Adapter` is the adapter
              corresponding to the library currently being tested. For example:
              import Adapter from 'enzyme-adapter-react-15';
              To find out more about this, see http://airbnb.io/enzyme/docs/installation/index.html

查阅文档发现 Enzyme 3.0 Api 发生变化

按照官方的说法,需要在 setup file 中添加如下代码。

// http://airbnb.io/enzyme/docs/installation/react-16.html
// setup file
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

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

那么问题来了,应该添加到什么地方?

尝试添加到每个测试文件前,没有成功
尝试添加到 `karma.conf.js` 的 `files: []` 中,也没有成功。
阅读 4.4k
2 个回答

虽然没有在网上查到具体setup file具体作用,但是在github中通过下载一下别人的测试包会发现,setup.js多是包含了执行测试脚本前的准备工作

例如: mocha --compilers js:babel-core/register --require ./test/setup.js
setup.js中的代码为
`import jsdom from 'jsdom';

if (typeof document === 'undefined') {
global.document = jsdom.jsdom('<!doctype html><html><body></body></html>');
global.window = document.defaultView;
global.navigator = global.window.navigator;
}
`
以上均是个人猜测,希望可以帮到你

package.json添加

"jest": {
    "setupTestFrameworkScriptFile": "<rootDir>/enzyme.config.js"
},  

然后在指定位置添加
enzyme.config.js

import { configure } from 'enzyme'
import Adapter from 'enzyme-adapter-react-16'

configure({ adapter: new Adapter() })

这样所有的测试文件中就不用重复配置了

参考文档

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