首页 > 解决方案 > 谷歌 Recaptcha v2 的 React 单元测试

问题描述

我实现了一个 React-Recaptcha 组件,我正在尝试向它添加一些单元测试。

除其他外,我试图测试我的组件的状态是否已更改(应该是选中该框后收到的令牌)。

<ReCAPTCHA sitekey={RECAPTCHA_SITE_KEY} onChange={value => this.setState({ gToken: value, recaptchaState: true })} />

我的测试是这样的

describe('RefundaModal Component', () => {
  const modalcomponent = shallow(<RefundModalDialog />);
  const captcha = shallow(<ReCAPTCHA sitekey={RECAPTCHA_SITE_KEY} onChange={() => {}} />);
  test('render RefundModalDialog component', () => {
    expect(modalcomponent.exists()).toBe(true);
  });
  test('user clicked on recaptcha', async () =>
    modalcomponent.setState({ gToken: null, recaptchaState: false });
    captcha.props().onChange();
    expect(modalcomponent.state().recaptchaState).toEqual(true);
  });
});

我也尝试了一种不同的方法captcha.simulate('change');,但是当我的意图是接收真实时,我一直接收错误。

实施此类测试的正确方法是什么?

谢谢

标签: javascriptreactjsjestjsenzyme

解决方案


推荐阅读