我使用的酶与反应16通过卡玛,茉莉花和webpack。在配置beforeEach函数中的酶适配器时,我进行了测试:
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_helper.js文件中:
import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
Enzyme.configure({ adapter: new Adapter() });我已经将该文件添加到由Karma加载的文件列表中,并通过webpack构建它(因此我可以使用ES6格式)。我已经(通过一个console.log并通过调试器运行)验证了该助手是否被加载,但是当测试文件中的测试运行时,我得到:
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
有什么建议我可能做错了吗?
发布于 2018-08-15 04:20:51
您不能在助手中配置它,但是您可以创建一个酶设置文件,该文件可以将所有的酶导出并在测试中而不是在酶中导入。
/* 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';然后,在测试中,导入酶设置文件,而不是酶。
/* myModule.test.js */
import {shallow} from './test/enzyme';https://stackoverflow.com/questions/47066498
复制相似问题