From 60056653c814e8d8e7a6587b4bb1e3dae234bc96 Mon Sep 17 00:00:00 2001 From: Sunil Pai Date: Wed, 6 Feb 2019 16:25:26 +0000 Subject: [PATCH] [TestUtils.act] warn when using TestUtils.act in node (#14768) * warn when using TestUtils.act in node * s/warns/throws * s/throw/warn * consistent ellipses --- src/__tests__/ReactTestRenderer-test.internal.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/__tests__/ReactTestRenderer-test.internal.js b/src/__tests__/ReactTestRenderer-test.internal.js index 0ca6fb5..1ce786c 100644 --- a/src/__tests__/ReactTestRenderer-test.internal.js +++ b/src/__tests__/ReactTestRenderer-test.internal.js @@ -1023,7 +1023,7 @@ describe('ReactTestRenderer', () => { }); describe('act', () => { - it('works', () => { + it('can use .act() to batch updates and effects', () => { function App(props) { React.useEffect(() => { props.callback(); @@ -1043,5 +1043,19 @@ describe('ReactTestRenderer', () => { expect(called).toBe(true); }); + it('warns and throws if you use TestUtils.act instead of TestRenderer.act in node', () => { + // we warn when you try to load 2 renderers in the same 'scope' + // so as suggested, we call resetModules() to carry on with the test + jest.resetModules(); + const {act} = require('react-dom/test-utils'); + expect(() => { + expect(() => act(() => {})).toThrow('document is not defined'); + }).toWarnDev( + [ + 'It looks like you called TestUtils.act(...) in a non-browser environment', + ], + {withoutStack: 1}, + ); + }); }); });