javascript - 如何在 React 中测试表单提交?

标签 javascript unit-testing reactjs

我有以下 React 组件:

export default class SignUpForm extends React.Component {
    ...
    doSignupForm(event) {
        // Some API call...
    }

    render() {
        return (
            <div>
                <form action="/" onSubmit={this.doSignupForm.bind(this)} id="register-form">
                    <button type="submit" id="register_button">Sign Up</button>
                </form>
            </div>
        );
    }
};

我想测试按钮是否触发 doSignupForm 函数 - 我该怎么做(最好使用 Mocha/Chai/Enzyme/Sinon)?

此外,如您所见,doSignupForm 函数触发 API 调用 - 是否应使用集成测试单独测试此 API 调用(?)。

最佳答案

您可以使用 React Utils 模拟表单提交:

var rendered = TestUtils.renderIntoDocument(SignupForm);
var form = TestUtils.findRenderedDOMComponentWithTag(rendered, 'form');
TestUtils.Simulate.submit(form);

此外,测试对实际 API 的调用是不可靠的,您应该使用您期望的响应来模拟 API 调用,一个想法是将 API 调用提取到它自己的模块中,并设置一个 spy 来测试具有特定响应的组件的行为(例如 Jasmine 的 spy ):

spyOn(apiModule, "requestProjects").and.callFake(function() {
    return { ...someProjects };
});

引用:

https://facebook.github.io/react/docs/test-utils.html https://volaresystems.com/blog/post/2014/12/10/Mocking-calls-with-Jasmine

关于javascript - 如何在 React 中测试表单提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42638384/

相关文章:

javascript - 使用 Javascript/JQuery 动态创建具有不同点击事件处理程序的多个 HTML 按钮

javascript - 如何在vue js中循环遍历数组中的图像数组

python - 如何使用补丁相对路径进行模拟?

matlab - 如何在 Jenkins 控制台中获取 Matlab 输出

android - 电容器在 android studio 中显示 react 应用程序的黑屏

javascript - React Navigation如何从堆栈导航内部隐藏标签栏

javascript - 网站javascript创建GWT 404错误

asp.net-mvc - ASP.net MVC - FluentValidation 单元测试

reactjs - 如何在 Android 和 iOS 上的 Capacitor 应用中实现 Firebase 身份验证?

javascript - 在将图像发送到 S3 之前,在前端调整图像大小,javascript