В моем коде есть компонент текстовой области. По умолчанию начальным значением текстового поля являются комментарии. Я могу смоделировать изменение компонента с помощью

expect(component.find('.text-area').text()).toEqual('comments');
component.find('textarea').simulate('change', { target: { value: 'Comments'}});
expect(component.find('.text-area').text()).toEqual('Comments');

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

component.find('.text-area').simulate('keyDown', { which: keycode('k') });

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

0
Nitika 30 Окт 2020 в 12:39

1 ответ

Лучший ответ

Моделирование keyDown должно принимать только значение keyCode. Попробуйте так:

component.find('.text-area').simulate('keyDown', { keyCode: 'k'});

И jsx должен быть таким:

<textarea
    className='text-area'
    onChange={(e) => {
        this.setState({ textArea: e.target.value });
    }}
    onKeyDown={(e) => {
        this.setState({ textArea: e.keyCode });
    }}
>
    {this.state.textArea}
</textarea>
1
salix 31 Окт 2020 в 09:09