小编kil*_*zid的帖子

通过 React 测试库 (RTL) 触发 react-ace onChange

在我的代码中,我有使用 react-ace 的组件。在我的渲染函数中,我有这一行:

<CodeEditor onChange={onCodeChanged} value={code} />
Run Code Online (Sandbox Code Playgroud)

回调函数:

const onCodeBodyChanged = (newCode) => {
      // some code ...
      dispatch(setResource({ newCode }));
}
Run Code Online (Sandbox Code Playgroud)

我想onCodeChanged通过 RTL进行测试,所以我试图找到更改值的文本区域,但没有任何成功

(不工作)测试的例子:

      const { container } = render(<ResourceEditorPanel />, createMockStore());
      const ace = container.querySelectorAll('.ace_text-input');
      fireEvent.change(ace, { target: { value: 'someText' } });
      await waitFor(() => {
        expect(dispatch).toHaveBeenCalled();
      });

Run Code Online (Sandbox Code Playgroud)

问题是fireEvent.change(ace, { target: { value: 'someText' } });不会触发我的功能 - onCodeChanged。

你知道我该如何测试吗?

ace-editor reactjs react-ace react-testing-library

5
推荐指数
1
解决办法
271
查看次数