首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React测试onSubmit

React测试onSubmit
EN

Stack Overflow用户
提问于 2016-10-27 18:18:59
回答 1查看 10.5K关注 0票数 3

我是新来的反应和玩笑。我一直在到处寻找测试,但我找不到任何有用的东西。这部分是因为我对它太陌生了,我不知道从哪里开始。所以请容忍我。

我有一个add to cart文件,它呈现一个带有按钮的表单。按钮是另一个组件,所以我不打算测试它。我必须测试表单的onSubmit函数。有什么想法吗?推荐人?

到目前为止,我的测试代码如下:

代码语言:javascript
复制
describe('AddToCart', () => {
  const React = require('react');
  const BaseRenderer = require('react/lib/ReactTestUtils');
  const Renderer = BaseRenderer.createRenderer();
  const ReactTestUtils = require('react-addons-test-utils');
  const AddToCart = require('../index.js').BaseAddToCart;

  it('Will Submit', () => {
    formInstance = ReactTestUtils.renderIntoDocument(<AddToCart product="" quantity=""/>);
    expect(ReactTestUtils.Simulate.onSubmit(formInstance)).toBeCalled();
  });
});

我得到了一个错误:

代码语言:javascript
复制
Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-27 22:14:14

考虑将取笑结合使用。我认为这是一个很好的栈单元测试在反应。

此外,我还做了一个示例测试,测试onSubmit组件中的LogIn函数。

代码语言:javascript
复制
import React from 'react';
import {shallow} from 'enzyme';
import LogIn from './LogIn';

describe('<LogIn />', () => {
    const testValues = {
        username: 'FOO',
        password: 'BAZ',
        handleSubmit: jest.fn(),
    };

    it('Submit works', () => {

        const component = shallow(
            <LogIn {...testValues} />
        );
        component.find('#submitButton').simulate('click');
        expect(testValues.handleSubmit).toHaveBeenCalledTimes(1);
        expect(testValues.handleSubmit).toBeCalledWith({username: testValues.username, password: testValues.password});
    });
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40291610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档