Я пытаюсь проверить пользовательский реагировать элемент построен на вершине некоторых одноранговой Реагировать элементы Код:Как проверить ребенка Реагировать компонент, созданный в Рендер с React.createElement()
return (
React.createElement("div", {className: classes},
React.createElement(TextField, {
ref: "omniTextBox",
className: "menu-textfield",
onChange: this._onControlChange
}),
)
);
this._onControlChange управляет состоянием на основе значения текстового поля. Это то, что я хочу протестировать, с различным вводом в текстовое поле, запускающим различное состояние компонента.
код Jest:
var customComponent = TestUtils.renderIntoDocument(<CustomField />);
var customField = TestUtils.findRenderedComponentWithType(customComponent, customField);
TestUtils.Simulate.change(customField, {target: {value: 'Hello, world'}});
Я пытался издеваться функцию _onControlChange, чтобы увидеть, если она называется, она называется 0 раз. Я также попытался увидеть состояние customField var до и после вызова simulate(), и ничего не меняется. Интересно, не хватает ли я чего-то, чтобы симулировать ввод текста в текстовом поле?
Я пробовал все варианты выбора по тегу, типу и классу без каких-либо успехов. Я могу увидеть элемент textfield, когда console.log предоставленный компонент. Есть ли способ захватить экземпляр TextField через ref?
Событие изменения обрабатывается на компоненте TextField, но не на 'customField', правильно? Вместо этого я попробую 'findRenderedComponentWithType (..., TextField)'. Еще одна вещь, о которой следует помнить, заключается в том, что в React 0.12+ вам нужно использовать '' в пользовательских компонентах JSX, или JSX рассматривает их как HTML (так что ' ' вместо ' ') –
@BinaryMuse мой код следует за initialcapitals, мой плохой при составлении кода для вопроса. Это не проблема. – totopia