使用webpack的Jest提供插件

Uma*_*pta 11 import reactjs webpack jestjs es6-modules

我正在使用webpack-provide-plugin导入反应.

new webpack.ProvidePlugin({
        "React": "react",
}),
Run Code Online (Sandbox Code Playgroud)

// text.jsx

let text = (props) => (
  <div> 
    <p class="text">this.props.text</p>
  </div>
)

export default text 
Run Code Online (Sandbox Code Playgroud)

//text.test.js

import React from 'react';
import { shallow } from 'enzyme';
import text from 'text';

it('Renders text', () => {
    const wrapper = shallow(<text/>);
    expect(wrapper.hasClass("text")).toEqual(true);
});
Run Code Online (Sandbox Code Playgroud)

但是当用jest运行反应组件测试时,我得到了错误

ReferenceError: React is not defined
Run Code Online (Sandbox Code Playgroud)

当然,因为反应不是明确导入的.除了显式导入和放弃提供插件之外,有没有办法解决这个问题?

小智 15

您可以像这样为Jest创建一个安装文件:

//jest.setup.js
window.React = require('react');
Run Code Online (Sandbox Code Playgroud)

并将其添加到Jest config:"setupFiles": [ "<rootDir>/jest.setup.js" ], http: //facebook.github.io/jest/docs/configuration.html#setupfiles-array

  • 请注意,这也适用于`DefinePlugin`。 (2认同)