React / Jest - Как смоделировать поведение event.preventDefault и event.stopPropagation - PullRequest
0 голосов
/ 25 марта 2020

У меня есть поле ввода следующим образом:

<Input name="score" type="number" className={cx(['input-width'])} value={this.state.score} isIncomplete={false} isInvalid={this.state.isScoreInvalid} min="0" max="100" onKeyPress={this.handleInput} onChange={this.updateValue} onBlur={this.updateScoreInvalidState} />

Ниже вызывается функция OnKeypress

handleInput(event) {
    const charCode = (typeof event.which === 'number') ? event.which : event.keyCode;

    if (charCode === 45 || charCode === 46) {
      console.log("Here-------------");
      event.preventDefault();
      event.stopPropagation();
    }
  }

Ниже вызывается функция onChange

updateValue(event) {
    this.setState({ [event.target.name]: event.target.value });
}

Я хочу чтобы проверить это поведение: Если неверный ввод: '-' ИЛИ ​​'.' Игнорируйте ввод и не обновляйте оценку переменной состояния. Пройдите следующий тест.

it('should render input field correctly with invalid character as input', () => {
    const wrapper = shallowWithIntl(<TestView {...testProps} />).first().shallow();
    const score = wrapper.find('Input[name="score"]');
    const onKeypressEvent = {
      preventDefault: jest.fn(),
      stopPropagation: jest.fn(),
      which: 45,
      target: { name: 'score', value: '-' },
    };
    const onChangeEvent = {
      target: { name: 'score', value: '-' },
    };

    expect(wrapper.state('score')).toEqual(5);
    expect(wrapper.state('isScoreInvalid')).toEqual(false);

    score.simulate('keypress', onKeypressEvent);
    score.simulate('change', onChangeEvent);
    wrapper.update();

    expect(wrapper.state('score')).toEqual(5);
    expect(wrapper.state('isScoreInvalid')).toEqual(false);
  });

Тест не работает должным образом. Это не мешает событию. Test Output

Как проверить эту функциональность? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...