2016-11-28 2 views
1

Так что я пытаюсь написать тест на свой компонент при использовании редукционной формы и фермента. До сих пор для моих простых компонентов я создал следующую функциюТестирование редукционной формы с ферментом с использованием общей функции

export const mountWithContext = (node, store) => { 
    const nodeToMount = store ? <Provider store={store} >{node}</Provider> : node; 
    return mount(nodeToMount); 
}; 

Вопрос заключается в том, что, когда я пытаюсь использовать реагировать-Redux, а он терпит неудачу. Попытка сделать:

class Form extends Component { 
    render() { 
    return <div><TestComponent /></div> 
    } 
} 

const TestForm = reduxForm({ form: 'testForm' })(Form); 
const enzymeWrapper = mountWithContext(TestForm, store) 

И я получаю следующую ошибку

'Warning: Failed prop type: Invalid prop `children` of type `function` supplied to `Provider`, expected a single ReactElement. 
Invariant Violation: React.Children.only expected to receive a single React element child. 

Любая идея, почему это происходит и как решить эту проблему?

ответ

1

Этот вопрос составляет 6 месяцев. Для других, столкнувшихся с аналогичными сообщениями об ошибках:

Отказ <Provider>{ node }</Provider> должен быть фактически <Provider><Node /></Provider> или что-то подобное. Ошибка в основном говорит о том, что для этого требуется элемент, а дети, используемые как { node }, а не <Node/> - это функция.

export const mountWithContext = (Node, store) => { 
    const nodeToMount = store ? (
    <Provider store={store} > 
     <Node /> 
    </Provider> 
) : <Node />; 
    return mount(nodeToMount); 
}; 

Так просто изменить имя аргумента в node для Node и использования в JSX от {node} к <Node /> или <Node></Node>

Смежные вопросы