我正在使用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}
/>
);