我正在通过 Karma、Jasmine 和 webpack 将 Enzyme 与 React 16 结合使用。我有一个测试,我在 beforeEach 函数中配置了 enzyme 适配器:
import React from 'react';
import Enzyme, { shallow } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import App from 'app';
describe('App', () => {
let wrapper;
beforeEach(() => {
Enzyme.configure({ adapter: new Adapter() });
wrapper = shallow(<App />);
});
it('should render an h1 header', () => {
expect(wrapper.type()).toBe('h1');
});
it('should render Hello, World!', () => {
expect(wrapper.text()).toEqual('Hello, World!');
});
});
这一切正常。
由于我不想在每个 Enzyme 测试中都这样做,因此我尝试将该代码移动到 Enzyme_helper.js 文件中:
import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
Enzyme.configure({ adapter: new Adapter() });
我已将该文件添加到 Karma 加载的文件列表中,并通过 webpack 构建它(因此我可以使用 ES6 格式)。我已经验证(通过 console.log 并通过调试器运行),帮助程序被加载,但是当测试文件中的测试运行时,我得到:
任何建议我可能做错了什么?
最佳答案
您不能在帮助程序中配置它,但您可以创建一个 Enzyme 设置文件,该文件重新导出所有 Enzyme 导出并在您的测试中导入它而不是 Enzyme。
/* test/enzyme.js */
import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import jasmineEnzyme from 'jasmine-enzyme';
Enzyme.configure({adapter: new Adapter()});
// I also like to use this file to initialize jasmine-enzyme
beforeEach(() => {
jasmineEnzyme();
});
export * from 'enzyme';
然后在您的测试中,导入您的 enzyme 设置文件而不是 Enzyme。
/* myModule.test.js */
import {shallow} from './test/enzyme';
关于reactjs - 在 Jasmine 助手中调用 Enzyme.configure,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47066498/