3

私は反応して冗談を言うのが初めてです。テストのためにあらゆる場所を探していますが、役立つものは見つかりません。これは、私がそれに慣れていないため、どこから始めればよいかわかりません。我慢してください。

内部にボタンがあるフォームをレンダリングするカートに追加するファイルがあります。ボタンは別のコンポーネントなので、テストするつもりはありません。フォームの 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();
  });
});

次のエラーが表示されます。

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

1 に答える 1

6

EnzymeでJestを使用することを検討してください。反応での単体テストには良いスタックだと思います。

また、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});
    });
});
于 2016-10-27T22:14:14.577 に答える