【发布时间】:2019-07-12 06:46:31
【问题描述】:
我对前端开发非常陌生,并且在使用 Shallow 进行酶单元测试时遇到了一些麻烦。基本上,我有类似的东西
class MyComponent extends React.Component {
constructor(props, context) {
super(props, context);
}
render() {
const {
handleClick,
...other
} = this.props;
return (
<div className="someClass">
// a bunch of stuff
<div className="buttonArea">
<MyComponentChild onClick={handleClick} />
</div>
</div>
);
}
MyComponent.propTypes = {
handleClick: PropTypes.func.isRequired,
...other
};
export default MyComponent;
}
handleClick 是在 MyComponent 所属的容器(即 ComponentContainer)中定义的回调函数。我将它作为道具传递给 MyComponent,然后传递给 MyComponentChild(这是一个按钮组件)。我想测试单击 MyComponentChild 时是否会触发 handleClick。
我目前的酶测试
it('handleClick should fire when clicked', () => {
const mockCallbackFn = jest.fn();
const wrapper = shallow(<MyComponent {handleClick = { mockCallbackFn }} />);
wrapper.find('MyComponentChild').simulate('click');
expect(mockCallbackFn).toHaveBeenCalled();
});
但是,此测试当前失败,因为 mockCallbackFn 显然从未被调用过。但是,这也过去了
expect(wrapper.find('MyComponentChild').prop('handleClick')).toEqual(mockCallbackFn);
我做错了什么?非常感谢任何帮助!
【问题讨论】:
标签: javascript reactjs jestjs enzyme