首页 > 解决方案 > 在 textarea 输入上的 Jest 测试写入

问题描述

我正在尝试使用 Jest 将一些模拟字符串写入文本区域,然后按 Enter,但无论出于何种原因它都不起作用。到目前为止我的代码:

test('Should add a message', () => {
  const element = wrapper.find('textarea');
  element.instance().value = 'abc';
  element.simulate('keypress', { key: 'Enter' });

  const newWrapper = wrapper.find('user');
  expect(newWrapper.length).toBe(1);
});

我的组件:

<textarea
  onKeyUp={sendMessage}
  placeholder='Type your message here and press enter to send...'
  cols='30'
  rows='5'
></textarea>

只是为了清楚 textarea 在以下测试通过时肯定存在:

test('Should have a textarea', () => {
  const element = wrapper.find('textarea');
  expect(element.length).toBe(1);
});

标签: javascriptreactjsjestjs

解决方案


在您的情况下,您正在寻找的是'keyUp',而不是'keypress'。而不是key,使用keyCode. keyCode对于Enter13。_

像这样:

element.simulate('keyUp', { keyCode: 13 });

推荐阅读