web-dev-qa-db-ja.com

Jest + react-testing-library:警告更新がact()でラップされていませんでした

コンポーネントをreact-testing-libraryでテストしていますが、テストはうまく機能します。私はこの警告を取り除くことができません。fireEventはそのままでactでラップする必要がありますが、もう一度ラップしようとしても役に立ちませんでした。

これが私のテストケースです。

it.only("should start file upload if file is added to the field", async () => {
    jest.useFakeTimers();
    const { getByTestId } = wrapper;
    const file = new File(["filefilefile"], "videoFile.mxf");

    const fileInput = getByTestId("drop-zone").querySelector(
      "input[type='file']"
    );

    fireEvent.change(fileInput, { target: { files: [file] } });

    act(() => {
      jest.runAllTimers();
    });

    await wait(() => {
      expect(
        initialProps.uploadItemVideoFileConnect.calledWith(file, 123)
      ).toBe(true);
    });
  });

ここに警告があります

Warning: An update to UploadButtonGridComponent inside a test was not wrapped in act(...).

    When testing, code that causes React state updates should be wrapped into act(...):

    act(() => {
      /* fire events that update state */
    });
    /* assert on the output */
7
iamwtk

awaitactの前に追加

await act(() => {
      /* fire events that update state */
    });
0
t-reksio