ReduxForm необходимо хранить для передачи в качестве реквизита в тестах

Я пытаюсь сделать несколько модульных тестов с помощью ReduxForm, и у меня явно проблемы с самыми простыми, такими как этот.

На самом деле у меня есть панель поиска, и когда я изменяю ее ввод, мне нужно, чтобы состояние отражало эти данные.

Я написал эти тесты:

beforeEach(() => {
      const store = configureStore()({
        searchBar:{
          inputField:''
        }
      });
      searchBar = TestUtils.renderIntoDocument(<SearchBar store={store}/>);
    });

it('should have a form Field tag', () => {
      const input = TestUtils.findRenderedComponentWithType(searchBar, Field);
      expect(input).toBeTruthy();
    });

Это должно проверить это:

import React from 'react';
import { Field, reduxForm } from 'redux-form';
/**
 * The seach bar component class definition
 */
class SearchBar extends React.Component {
  /**
   * Render the searchBar component
   */
  render() {
    return (
      <form>
        <Field name="inputField" component="input" type="text"/>
        <button type="submit">Rechercher</button>
      </form>
    );
  }
}

/**
 * Decorate the form
 */
SearchBar = reduxForm({
  form: 'searchBar'
})(SearchBar);

export default SearchBar;

Но у меня вылетает следующая ошибка:

Invariant Violation: Could not find "store" in either the context or props of "Connect(ConnectedField)". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "Connect(ConnectedField)". in src/index.spec.js (line 3551)

Даже если я передам ему реквизиты в своем компоненте... (см. вызов beforeEach)

Любые идеи ?


person mfrachet    schedule 04.10.2016    source источник


Ответы (1)


Для тестирования редукс-формы вам нужно иметь редукционный магазин и провайдер.

попробуйте что-то вроде этого:

searchBar = TestUtils.renderIntoDocument(<Provider store={store}><SearchBar /></Provider>);

person Steeve Pitis    schedule 04.10.2016