首页 > 解决方案 > React-Test-Render 调用组件方法

问题描述

我有以下组件:

export const FormikInput: React.SFC<Props> = (props: Props) => {
   const handleChange = (value: string) => {
       // do something
       props.setFieldValue(props.key, value);


    return (
           <TextField
            label={props.label}
            onChangeText={handleChange}
            value={props.values[props.key]}
        />
);

};

我想调用handleChange方法用户 react-test-renderer 可以吗?

标签: reactjsreact-test-renderer

解决方案


给一个classnametoTextField并嘲笑你handleChange这样的:

describe('handleChange event success', () => {
it('handleChange invokes without throwing an error', () => {
    const handleChange = jest.fn();
    const wrapper = shallow(<YourComponent
      handleChange ={handleChange}
       />);
    wrapper.find('.myTextField').simulate('change');
    expect(handleChange ).toHaveBeenCalled();
  });
});

您的 TS 可能需要一些调整,我已经为 JS 编写了这个


推荐阅读