我正在通过 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/

10-10 21:19