web-dev-qa-db-fra.com

Jest + react-testing-library: la mise à jour d'avertissement n'a pas été encapsulée dans act ()

Je teste mon composant avec react-testing-library et test fonctionne bien. Je ne peux tout simplement pas me débarrasser de cet avertissement, fireEvent devrait être enveloppé dans un acte prêt à l'emploi, mais j'ai essayé de l'envelopper à nouveau et cela n'a pas aidé.

Voici mon cas de test.

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);
    });
  });

Voici l'avertissement

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

ajouter await avant act

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