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

发布于 2022-09-06 08:42:32 字数 1043 浏览 20 评论 0

昨天将项目更新到 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: []` 中,也没有成功。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

羁客 2022-09-13 08:42:32

虽然没有在网上查到具体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;
}
`
以上均是个人猜测,希望可以帮到你

千里故人稀 2022-09-13 08:42:32

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

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

参考文档

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文