コンポーネントを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 */
await
をact
の前に追加
await act(() => {
/* fire events that update state */
});