5

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

<CodeEditor onChange={onCodeChanged} value={code} />

回调函数:

const onCodeBodyChanged = (newCode) => {
      // some code ...
      dispatch(setResource({ newCode }));
}

我想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();
      });

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

你知道我该如何测试它吗?

4

1 回答 1

-1

Ace 编辑器等待输入事件,因此您还需要触发类似fireEvent(ace, new Event('input'))

于 2021-05-18T15:18:01.677 回答