renderHook from /dom/pure has global side-effects · Issue #546 · testing-library/react-hooks-testing-library (original) (raw)

Relevant code or config:

const { renderHook } = require("@testing-library/react-hooks/dom/pure");

let consoleError; beforeEach(() => { consoleError = console.error; });

afterEach(() => { if (console.error !== consoleError) { throw new Error("Did not cleanup console.error"); } });

test("pure", () => { function useHook() { return useState(false); }

const { result } = renderHook(() => useHook(), {}); });

What you did:

Use @testing-library/dom/pure in karma-mocha though the problem happens in arbitrary testing frameworks I suspect

What happened:

console.error was not cleaned up

Reproduction:

https://github.com/eps1lon/testing-library-react-hooks-impure

Problem description:

We check for mistakes in afterEach if a test was not properly cleaned up. One of those checks looks at console.error.

Suggested solution:

renderHook probably has some global side-effects. These should be documented by explaining why they exists and how to disable them or work around them.