反应测试库中的fireevent问题

时间:2019-04-10 11:58:07

标签: reactjs react-testing-library

我正在为我的React应用程序使用react-testing-library。 在一个测试用例中,我需要在文本框和焦点输出中填充一些值。

这是测试脚本-

it('searchbox wrapper',async()=>{
    let wrapper=getSearchBoxWrapperInstance('')
    let inputBox=wrapper.findByTestId('inputText');
    inputBox.value='12345';
    fireEvent(inputBox,'focusOut');

})

运行测试用例时出现以下错误-

TypeError: element.dispatchEvent is not a function

  79 |     let inputBox=wrapper.findByTestId('inputText');
  80 |     inputBox.value='12345';
> 81 |     fireEvent(inputBox,'focusOut');
     |     ^
  82 |     //fireEvent('Blur',
  83 | 
  84 |     //await (() => wrapper.getByText('')))

  at fireEvent (node_modules/dom-testing-library/dist/events.js:533:18)

请告知我是否可以提供更多信息

1 个答案:

答案 0 :(得分:1)

我假设getSearchBoxWrapperInstance返回render的结果。

尝试一下是否可行:

it('searchbox wrapper',async()=>{
  let wrapper=getSearchBoxWrapperInstance('')
  let inputBox=wrapper.findByTestId('inputText');
  fireEvent.change(inputBox, { target:  { value: '12345' } });
  fireEvent.focusOut(inputBox);
  // In alternative you could try fireEvent.blur
})

findByTestId也可能找不到您的元素。尝试注销以查看是否存在这种情况,或者使用getByTestId,如果找不到该元素,则会导致错误。