Выберите вариант с React TestUtils Simulate

У меня есть следующие компоненты React, и я хочу выбрать один из selectElements в моем блоке выбора с помощью TestUtils. Как я могу это сделать?

var selectElements = ["type_a", "type_b"];

var SelectElement = React.createClass({
  render: function() {
    return (
      <option value={this.props.type}>{this.props.type}</option>
      );
  }
});

var MyForm = React.createClass({
  handleSubmit: function(e) {
    console.log("submitted");
  },
  render: function () {
    var selectElements = this.props.availableTypes.map(function (type) {
      return (
        <SelectElement key={type} type={type} />
        );
    });
    return (
      <form role="form" onSubmit={this.handleSubmit}>
        <select ref="type" name="type">
          <option value="">-- Choose --</option>
          {selectElements}
        </select>
        <input type="submit" value="Search"/>
      </form>
      );
  }
});

Я уже пробовал делать это так:

var myFormComponent = TestUtils.renderIntoDocument(<MyForm selectElements={selectElements} />);
var form = TestUtils.findRenderedDOMComponentWithTag(myFormComponent, 'form');
var selectComponent = TestUtils.findRenderedDOMComponentWithTag(form, 'select');

TestUtils.Simulate.change(selectComponent, { target: { value: 'type_a' } });
TestUtils.Simulate.submit(form);

но это не работает.


person andersem    schedule 06.11.2014    source источник


Ответы (1)


Проблема может заключаться в том, что Simulate.change вызывает только выбор onChange (которого не существует). Я не думаю, что на самом деле это приведет к изменению значения выбора, если вы не вызовете это изменение в своем обработчике onChange.

Если вы настаиваете на использовании ссылок вместо onChange, измените эту строку:

TestUtils.Simulate.change(selectComponent, { target: { value: 'type_a' } });

к этому:

selectComponent.getDOMNode().value = 'type_a';
person Brigand    schedule 06.11.2014
comment
Что было бы подходящим способом проверить это тогда? - person Johnny Everson; 08.09.2015
comment
С refs или со значением/onChange? - person Brigand; 09.09.2015