From 65352e16d09318ebe9dd1b6dcdd2f9e1122f5368 Mon Sep 17 00:00:00 2001 From: Ian VanSchooten Date: Tue, 20 Apr 2021 21:39:58 -0400 Subject: [PATCH 1/2] Wrap in act() to avoid extraneous console.error --- src/__tests__/02.extra-3.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/__tests__/02.extra-3.js b/src/__tests__/02.extra-3.js index ef89295b..efee86df 100644 --- a/src/__tests__/02.extra-3.js +++ b/src/__tests__/02.extra-3.js @@ -4,6 +4,7 @@ import {render, screen} from '@testing-library/react' import userEvent from '@testing-library/user-event' import App from '../final/02.extra-3' // import App from '../exercise/02' +import {act} from 'react-dom/test-utils' beforeEach(() => { jest.spyOn(window, 'fetch') @@ -58,11 +59,14 @@ test('displays the pokemon', async () => { console.error.mockReset() - userEvent.type(input, 'mew') - userEvent.click(submit) + act(() => { + userEvent.type(input, 'mew') + userEvent.click(submit) + + // verify unmounting does not result in an error + unmount() + }) - // verify unmounting does not result in an error - unmount() // wait for a bit for the mocked request to resolve: await new Promise(r => setTimeout(r, 100)) alfredTip( From 5c330b97335521a5cc06a1481b0b7ec05e62749f Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Wed, 21 Apr 2021 10:03:22 -0600 Subject: [PATCH 2/2] some improvements/simplifications --- src/__tests__/02.extra-3.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/__tests__/02.extra-3.js b/src/__tests__/02.extra-3.js index efee86df..c48a7107 100644 --- a/src/__tests__/02.extra-3.js +++ b/src/__tests__/02.extra-3.js @@ -1,10 +1,9 @@ import * as React from 'react' import {alfredTip} from '@kentcdodds/react-workshop-app/test-utils' -import {render, screen} from '@testing-library/react' +import {render, screen, act} from '@testing-library/react' import userEvent from '@testing-library/user-event' import App from '../final/02.extra-3' // import App from '../exercise/02' -import {act} from 'react-dom/test-utils' beforeEach(() => { jest.spyOn(window, 'fetch') @@ -57,18 +56,18 @@ test('displays the pokemon', async () => { ) expect(console.error).toHaveBeenCalledTimes(2) - console.error.mockReset() - - act(() => { - userEvent.type(input, 'mew') - userEvent.click(submit) + // restore the original implementation + console.error.mockRestore() + // but we still want to make sure it's not called + jest.spyOn(console, 'error') - // verify unmounting does not result in an error - unmount() - }) + userEvent.type(input, 'mew') + userEvent.click(submit) + // verify unmounting does not result in an error + unmount() // wait for a bit for the mocked request to resolve: - await new Promise(r => setTimeout(r, 100)) + await act(() => new Promise(r => setTimeout(r, 100))) alfredTip( () => expect(console.error).not.toHaveBeenCalled(), 'Make sure that when the component is unmounted the component does not attempt to trigger a rerender with `dispatch`',