React Jest Testing onSubmit

Rob*_*bby 2 reactjs jestjs jasmine2.0

我是新来的反应和开玩笑.我一直在寻找测试,但我找不到任何有用的东西.这部分是因为我对它很新,我不知道从哪里开始.请耐心等待我.

我有一个添加到购物车文件,其中呈现一个带有按钮的表单.按钮是另一个组件,所以我不打算测试它.我必须测试表单的onSubmit函数.有什么想法吗?参考文献?

这是我到目前为止测试的代码:

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();
  });
});
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined.
Run Code Online (Sandbox Code Playgroud)

Van*_*avv 5

考虑使用Jest with Enzyme.我认为反应中的单元测试是很好的堆栈.

另外,我做了一个示例测试,测试LogIn组件中的onSubmit函数.

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});
    });
});
Run Code Online (Sandbox Code Playgroud)