我正在使用babel插件,该插件提供了一个称为myHelper的函数,该函数在要测试的组件内部使用(但由于作为babel插件提供而未导入)。

如何使用Jest“全局”模拟myHelper

最佳答案

我会让那些组件接受myHelper属性,以选择性地模拟babel提供的myHelper方法。默认情况下,该属性将指向原始的myHelper方法:

class MyComponent extends Component {
  constructor() {
      // Use myHelper function like:
      this.props.myHelper();
  }

  return (
    <div>...</div>
  );
}

MyComponent.propTypes = {
  myHelper: PropTypes.func.isRequired,
};

MyComponent.defaultProps = {
  // set by default to babel-provided method
  myHelper: myHelper,
};


..以及在您使用例如enzyme的测试中:

const myHelperMock = jest.fn();
const wrapper = shallow(
    <MyComponent
      myHelper={myHelperMock}
    />
);

09-26 10:37