Skip to content

Instantly share code, notes, and snippets.

@vjeux
Last active May 17, 2020 21:37
Show Gist options
  • Save vjeux/0050ee599a30c12e922e181c73518f2e to your computer and use it in GitHub Desktop.
Save vjeux/0050ee599a30c12e922e181c73518f2e to your computer and use it in GitHub Desktop.
(517) >> yarn test
Using globally installed version of Yarn
yarn run v1.12.1
$ jest src/*
(node:37909) UnhandledPromiseRejectionWarning: Error: Callback didn't resolve
(node:37909) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:37909) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:37909) UnhandledPromiseRejectionWarning: Error: Callback didn't resolve
(node:37909) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
FAIL src/hooks/__tests__/Recoil_useRecoilCallback-test.js
● Console
console.error
Warning: You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);
at printWarning (node_modules/react-dom/cjs/react-dom-test-utils.development.js:87:30)
at error (node_modules/react-dom/cjs/react-dom-test-utils.development.js:59:5)
at node_modules/react-dom/cjs/react-dom-test-utils.development.js:946:13
console.error
Warning: You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);
at printWarning (node_modules/react-dom/cjs/react-dom-test-utils.development.js:87:30)
at error (node_modules/react-dom/cjs/react-dom-test-utils.development.js:59:5)
at node_modules/react-dom/cjs/react-dom-test-utils.development.js:946:13
console.error
Warning: You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);
at printWarning (node_modules/react-dom/cjs/react-dom-test-utils.development.js:87:30)
at error (node_modules/react-dom/cjs/react-dom-test-utils.development.js:59:5)
at node_modules/react-dom/cjs/react-dom-test-utils.development.js:946:13
console.error
Warning: You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);
at printWarning (node_modules/react-dom/cjs/react-dom-test-utils.development.js:87:30)
at error (node_modules/react-dom/cjs/react-dom-test-utils.development.js:59:5)
at node_modules/react-dom/cjs/react-dom-test-utils.development.js:946:13
console.error
Warning: You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);
at printWarning (node_modules/react-dom/cjs/react-dom-test-utils.development.js:87:30)
at error (node_modules/react-dom/cjs/react-dom-test-utils.development.js:59:5)
at node_modules/react-dom/cjs/react-dom-test-utils.development.js:946:13
● useRecoilCallback › Reads from a snapshot created at callback call time
expect(received).toBe(expected) // Object.is equality
Expected: 345
Received: null
142 | act(cb);
143 | await flushPromisesAndTimers();
> 144 | expect(seenValue).toBe(345);
| ^
145 |
146 | // But does not see an update flushed while the cb is in progress:
147 | seenValue = null;
at Object.<anonymous> (src/hooks/__tests__/Recoil_useRecoilCallback-test.js:144:23)
FAIL src/hooks/__tests__/Recoil_useRecoilStateReset-test.js
● Console
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`Component`). To locate the bad setState() call inside `Component`, follow the stack trace as described in https://fb.me/setstate-in-render
in Component
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:46:11
● useResetRecoilState - async selector default
expect(received).toBe(expected) // Object.is equality
Expected: "\"set value\""
Received: "loading"
76 | act(() => setValue('set value'));
77 | act(() => jest.runAllTimers()); // Hmm, interesting this is required
> 78 | expect(container.textContent).toBe('"set value"');
| ^
79 | act(() => resetValue());
80 | expect(container.textContent).toBe('loading');
81 | act(() => resolve('resolved fallback'));
at Object.<anonymous> (src/hooks/__tests__/Recoil_useRecoilStateReset-test.js:78:33)
FAIL src/hooks/__tests__/Recoil_useRecoilValueLoadable-test.js
● Console
console.error
Warning: An update to ReadLoadable 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in ReadLoadable
in Suspense
in ErrorBoundary
in RecoilRoot
148 | return;
149 | }
> 150 | forceUpdate([]);
| ^
151 | }
152 |
153 | differenceSets(
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at forceUpdate (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at updateState (src/hooks/Recoil_Hooks.js:150:7)
at fn (src/hooks/Recoil_Hooks.js:167:13)
at Object.trace (src/util/Recoil_Tracing.js:38:10)
at src/hooks/Recoil_Hooks.js:166:19
● useRecoilValueLoadable - loading loadable
expect(received).toEqual(expected) // deep equality
Expected: "VALUE"
Received: "LOADING"
114 | resolved = true;
115 | act(() => jest.runAllTimers());
> 116 | expect(c.textContent).toEqual('VALUE');
| ^
117 | await Promise.all(
118 | promises.map(async promise => {
119 | if (!(promise instanceof Promise)) {
at Object.<anonymous> (src/hooks/__tests__/Recoil_useRecoilValueLoadable-test.js:116:25)
FAIL src/recoil_values/__tests__/Recoil_atomWithFallback-test.js
● Console
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`ReadsAtom`). To locate the bad setState() call inside `ReadsAtom`, follow the stack trace as described in https://fb.me/setstate-in-render
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:46:11
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`MyReadsAtom`). To locate the bad setState() call inside `MyReadsAtom`, follow the stack trace as described in https://fb.me/setstate-in-render
in MyReadsAtom
in Switch
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:46:11
● Async fallback
expect(received).toEqual(expected) // deep equality
Expected: "42"
Received: "loading"
67 | expect(container.textContent).toEqual('loading');
68 | act(() => jest.runAllTimers());
> 69 | expect(container.textContent).toEqual('42');
| ^
70 | });
71 |
72 | describe('ReturnDefaultOrFallback', () => {
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_atomWithFallback-test.js:69:33)
FAIL src/recoil_values/__tests__/Recoil_selector-test.js
● Console
console.error
Error: Uncaught [Error: MY ERROR]
at reportException (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:62:24)
at innerInvokeEventListeners (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:346:9)
at invokeEventListeners (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:281:3)
at HTMLUnknownElementImpl._dispatch (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:228:9)
at HTMLUnknownElementImpl.dispatchEvent (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:101:17)
at HTMLUnknownElement.dispatchEvent (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:207:34)
at Object.invokeGuardedCallbackDev (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:237:16)
at invokeGuardedCallback (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:292:31)
at beginWork$1 (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:23203:7)
at performUnitOfWork (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:22157:12) Error: MY ERROR
at /Users/vjeux/random/Recoil/src/recoil_values/Recoil_error.js:22:11
at get (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selectorFamily.js:108:32)
at evaluateSelectorGetter (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_NEW.js:430:16)
at getSelectorResult (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_NEW.js:592:9)
at Object.get (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_NEW.js:745:12)
at getNodeLoadable (/Users/vjeux/random/Recoil/src/core/Recoil_FunctionalCore.js:46:23)
at replacer (/Users/vjeux/random/Recoil/src/core/Recoil_RecoilValue.js:48:38)
at Object.replaceState (/Users/vjeux/random/Recoil/src/testing/Recoil_TestingUtils.js:62:32)
at fn (/Users/vjeux/random/Recoil/src/core/Recoil_RecoilValue.js:46:11)
at Object.trace (/Users/vjeux/random/Recoil/src/util/Recoil_Tracing.js:38:10)
at getRecoilValueAsLoadable (/Users/vjeux/random/Recoil/src/core/Recoil_RecoilValue.js:45:11)
at get (/Users/vjeux/random/Recoil/src/recoil_values/__tests__/Recoil_selector-test.js:42:10)
at Object.<anonymous> (/Users/vjeux/random/Recoil/src/recoil_values/__tests__/Recoil_selector-test.js:142:10)
at Object.asyncJestTest (/Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:100:37)
at /Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/queueRunner.js:47:12
at new Promise (<anonymous>)
at mapper (/Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/queueRunner.js:30:19)
at /Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/queueRunner.js:77:41
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at VirtualConsole.<anonymous> (node_modules/jsdom/lib/jsdom/virtual-console.js:29:45)
at reportException (node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:66:28)
at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:346:9)
at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:281:3)
at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:228:9)
at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:101:17)
at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:207:34)
console.error
The above error occurred in the <ReadsAtom> component:
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
React will try to recreate this component tree from scratch using the error boundary you provided, ErrorBoundary.
at logCapturedError (node_modules/react-dom/cjs/react-dom.development.js:19527:21)
at logError (node_modules/react-dom/cjs/react-dom.development.js:19564:5)
at ErrorBoundary.update.payload (node_modules/react-dom/cjs/react-dom.development.js:20723:7)
at getStateFromUpdate (node_modules/react-dom/cjs/react-dom.development.js:12293:35)
at processUpdateQueue (node_modules/react-dom/cjs/react-dom.development.js:12424:22)
at resumeMountClassInstance (node_modules/react-dom/cjs/react-dom.development.js:13091:3)
at updateClassComponent (node_modules/react-dom/cjs/react-dom.development.js:17105:20)
at beginWork (node_modules/react-dom/cjs/react-dom.development.js:18620:16)
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`ReadsAtom`). To locate the bad setState() call inside `ReadsAtom`, follow the stack trace as described in https://fb.me/setstate-in-render
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:46:11
console.error
Warning: An update to ReadsAtom 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
148 | return;
149 | }
> 150 | forceUpdate([]);
| ^
151 | }
152 |
153 | differenceSets(
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at forceUpdate (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at updateState (src/hooks/Recoil_Hooks.js:150:7)
at fn (src/hooks/Recoil_Hooks.js:167:13)
at Object.trace (src/util/Recoil_Tracing.js:38:10)
at src/hooks/Recoil_Hooks.js:166:19
console.error
Warning: An update to ReadsAtom 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
148 | return;
149 | }
> 150 | forceUpdate([]);
| ^
151 | }
152 |
153 | differenceSets(
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at forceUpdate (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at updateState (src/hooks/Recoil_Hooks.js:150:7)
at fn (src/hooks/Recoil_Hooks.js:167:13)
at Object.trace (src/util/Recoil_Tracing.js:38:10)
at src/hooks/Recoil_Hooks.js:166:19
console.error
Warning: An update to ReadsAtom 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
148 | return;
149 | }
> 150 | forceUpdate([]);
| ^
151 | }
152 |
153 | differenceSets(
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at forceUpdate (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at updateState (src/hooks/Recoil_Hooks.js:150:7)
at fn (src/hooks/Recoil_Hooks.js:167:13)
at Object.trace (src/util/Recoil_Tracing.js:38:10)
at src/hooks/Recoil_Hooks.js:166:19
console.error
Warning: An update to ReadsAtom 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
148 | return;
149 | }
> 150 | forceUpdate([]);
| ^
151 | }
152 |
153 | differenceSets(
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at forceUpdate (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at updateState (src/hooks/Recoil_Hooks.js:150:7)
at fn (src/hooks/Recoil_Hooks.js:167:13)
at Object.trace (src/util/Recoil_Tracing.js:38:10)
at src/hooks/Recoil_Hooks.js:166:19
console.error
Warning: An update to Batcher 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in Batcher (created by RecoilRoot)
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at updateStateWithNewDepsFromAsync (src/recoil_values/Recoil_selector_NEW.js:712:11)
at src/recoil_values/Recoil_selector_NEW.js:262:11
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`Component`). To locate the bad setState() call inside `Component`, follow the stack trace as described in https://fb.me/setstate-in-render
in Component
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:46:11
console.error
Warning: An update to Batcher 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in Batcher (created by RecoilRoot)
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at updateStateWithNewDepsFromAsync (src/recoil_values/Recoil_selector_NEW.js:712:11)
at src/recoil_values/Recoil_selector_NEW.js:276:11
console.error
Warning: An update to Batcher 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in Batcher (created by RecoilRoot)
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at updateStateWithNewDepsFromAsync (src/recoil_values/Recoil_selector_NEW.js:712:11)
at src/recoil_values/Recoil_selector_NEW.js:350:11
console.error
Warning: An update to Batcher 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in Batcher (created by RecoilRoot)
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at updateStateWithNewDepsFromAsync (src/recoil_values/Recoil_selector_NEW.js:712:11)
at src/recoil_values/Recoil_selector_NEW.js:262:11
console.error
Warning: An update to Batcher 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in Batcher (created by RecoilRoot)
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at updateStateWithNewDepsFromAsync (src/recoil_values/Recoil_selector_NEW.js:712:11)
at src/recoil_values/Recoil_selector_NEW.js:350:11
console.error
Warning: An update to Batcher 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in Batcher (created by RecoilRoot)
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at updateStateWithNewDepsFromAsync (src/recoil_values/Recoil_selector_NEW.js:712:11)
at src/recoil_values/Recoil_selector_NEW.js:276:11
● useRecoilState - resolved async selector
expect(received).toEqual(expected) // deep equality
Expected: "\"HELLO\""
Received: "loading"
121 | expect(c.textContent).toEqual('loading');
122 | act(() => jest.runAllTimers());
> 123 | expect(c.textContent).toEqual('"HELLO"');
| ^
124 | });
125 |
126 | test('selector - evaluate to RecoilValue', () => {
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:123:25)
● selector - catching loads
expect(received).toEqual(expected) // deep equality
Expected: "READY"
Received: "BYPASS"
180 | expect(get(bypassSelector)).toBe('BYPASS');
181 | act(() => jest.runAllTimers());
> 182 | expect(get(bypassSelector)).toEqual('READY');
| ^
183 | });
184 |
185 | test('useRecoilState - selector catching exceptions', () => {
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:182:31)
● useRecoilState - async selector
expect(received).toEqual(expected) // deep equality
Expected: "\"READY\""
Received: "loading"
213 | // When that resolves the data is ready
214 | act(() => jest.runAllTimers());
> 215 | expect(c1.textContent).toEqual('"READY"');
| ^
216 | });
217 |
218 | test('useRecoilState - selector blocked on dependency', () => {
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:215:26)
● useRecoilState - selector blocked on dependency
expect(received).toEqual(expected) // deep equality
Expected: "\"READY\""
Received: "loading"
229 | // When the dependency resolves, the data is ready
230 | act(() => jest.runAllTimers());
> 231 | expect(c2.textContent).toEqual('"READY"');
| ^
232 | });
233 |
234 | test('useRecoilState - selector catching loads', async () => {
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:231:26)
● useRecoilState - selector catching loads
expect(received).toEqual(expected) // deep equality
Expected: "\"READY\""
Received: "\"BYPASS\""
256 | // with the new data.
257 | act(() => jest.runAllTimers());
> 258 | expect(c3.textContent).toEqual('"READY"');
| ^
259 | });
260 |
261 | test('useRecoilState - selector catching all of 2 loads', async () => {
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:258:26)
● useRecoilState - selector catching all of 2 loads
expect(received).toEqual(expected) // deep equality
Expected: "1"
Received: "0"
288 | // After the first resolution, we're still waiting on the second
289 | act(() => jest.runAllTimers());
> 290 | expect(c3.textContent).toEqual('1');
| ^
291 |
292 | // When both are available, we are done!
293 | act(() => jest.runAllTimers());
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:290:26)
● useRecoilState - selector catching any of 2 loads
expect(received).toEqual(expected) // deep equality
Expected: "2"
Received: "0"
324 | // in parallel after one event loop.
325 | act(() => jest.runAllTimers());
> 326 | expect(c3.textContent).toEqual('2');
| ^
327 | });
328 |
329 | // Test the ability to catch a promise for a pending dependency that we can
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:326:26)
● useRecoilState - selector catching promise and resolving asynchronously
expect(received).toEqual(expected) // deep equality
Expected: "\"BYPASS\""
Received: "loading"
350 | resolveBypass('BYPASS');
351 | act(() => jest.runAllTimers());
> 352 | expect(c.textContent).toEqual('"BYPASS"');
| ^
353 | resolveOriginal('READY');
354 | act(() => jest.runAllTimers());
355 | expect(c.textContent).toEqual('"READY"');
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:352:25)
● useRecoilState - selector catching promise 2
expect(received).toEqual(expected) // deep equality
Expected: "\"READY\""
Received: "loading"
392 | // get READY and not READY NOW.
393 | // expect(c.textContent).toEqual('"READY NOW"');
> 394 | expect(c.textContent).toEqual('"READY"');
| ^
395 |
396 | // Test that the promise for the dependency that we got actually resolved
397 | // to the dependency's value.
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:394:25)
● Detect circular dependencies
expect(received).toEqual(expected) // deep equality
Expected: StringContaining "circular/A"
Received: "Maximum call stack size exceeded"
417 | window.__DEV__ = true;
418 | expect(get(selectorC)).toBeInstanceOf(Error);
> 419 | expect(getError(selectorC).message).toEqual(
| ^
420 | expect.stringContaining('circular/A'),
421 | );
422 | window.__DEV__ = devStatus;
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:419:39)
● selector is able to track dependencies discovered asynchronously
expect(received).toEqual(expected) // deep equality
Expected: "Async Dep Value"
Received: "loading"
450 | act(() => jest.runAllTimers());
451 |
> 452 | expect(container.textContent).toEqual('Async Dep Value');
| ^
453 |
454 | act(() => setAtom('CHANGED Async Dep'));
455 |
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:452:33)
● selector should rerun entire selector when a dep changes
expect(received).toEqual(expected) // deep equality
Expected: "6"
Received: "loading"
504 | act(() => jest.runAllTimers());
505 |
> 506 | expect(container.textContent).toEqual('6');
| ^
507 |
508 | act(() => setAtom(4));
509 |
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:506:33)
● async selector runs the minimum number of times required
expect(received).toBe(expected) // Object.is equality
Expected: 2
Received: 1
544 | act(() => jest.runAllTimers());
545 |
> 546 | expect(numTimesRan).toBe(2);
| ^
547 |
548 | resolveAsyncDep2('b');
549 |
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:546:23)
● selector - dynamic getRecoilValue()
expect(received).toEqual(expected) // deep equality
Expected: "\"READY\""
Received: "loading"
616 | act(() => jest.runAllTimers());
617 |
> 618 | expect(el.textContent).toEqual('"READY"');
| ^
619 | });
620 |
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_selector-test.js:618:26)
(node:37909) UnhandledPromiseRejectionWarning: Error: expect(received).resolves.toHaveProperty(path, value)
Expected path: "value"
- Expected value - 2
+ Received value + 2
@@ -1,15 +1,15 @@
Array [
Object {
- "contents": [Error],
+ "contents": Promise {},
"errorMaybe": [Function errorMaybe],
"errorOrThrow": [Function errorOrThrow],
"getValue": [Function getValue],
"map": [Function map],
"promiseMaybe": [Function promiseMaybe],
"promiseOrThrow": [Function promiseOrThrow],
- "state": "hasError",
+ "state": "loading",
"toPromise": [Function toPromise],
"valueMaybe": [Function valueMaybe],
"valueOrThrow": [Function valueOrThrow],
},
Object {
(node:37909) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 16)
(node:37909) UnhandledPromiseRejectionWarning: Error: expect(received).resolves.toHaveProperty(path, value)
Expected path: "value"
- Expected value - 2
+ Received value + 2
@@ -1,15 +1,15 @@
Array [
Object {
- "contents": [Error],
+ "contents": Promise {},
"errorMaybe": [Function errorMaybe],
"errorOrThrow": [Function errorOrThrow],
"getValue": [Function getValue],
"map": [Function map],
"promiseMaybe": [Function promiseMaybe],
"promiseOrThrow": [Function promiseOrThrow],
- "state": "hasError",
+ "state": "loading",
"toPromise": [Function toPromise],
"valueMaybe": [Function valueMaybe],
"valueOrThrow": [Function valueOrThrow],
},
Object {
(node:37909) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 17)
FAIL src/recoil_values/__tests__/Recoil_atomFamily-test.js
● Console
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`ReadsAtom`). To locate the bad setState() call inside `ReadsAtom`, follow the stack trace as described in https://fb.me/setstate-in-render
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:46:11
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`MyReadsAtom`). To locate the bad setState() call inside `MyReadsAtom`, follow the stack trace as described in https://fb.me/setstate-in-render
in MyReadsAtom
in Switch
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:46:11
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`Component`). To locate the bad setState() call inside `Component`, follow the stack trace as described in https://fb.me/setstate-in-render
in Component
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:46:11
● Upgrades non-parameterized atoms
TypeError: Cannot destructure property 'error' of 'undefined' as it is undefined.
12 | message: string,
13 | projectName: 'recoil',
> 14 | {error}: {|error?: Error|},
| ^
15 | ): null {
16 | // if (__DEV__) {
17 | // console.error(message, error);
at recoverableViolation (src/util/Recoil_recoverableViolation.js:14:5)
at registerNode (src/core/Recoil_Node.js:81:7)
at baseAtom (src/recoil_values/Recoil_atom.js:109:10)
at atom (src/recoil_values/Recoil_atom.js:208:12)
at atomFamily (src/recoil_values/Recoil_atomFamily.js:190:18)
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_atomFamily-test.js:77:13)
● atomFamily async fallback
expect(received).toEqual(expected) // deep equality
Expected: "42"
Received: "loading"
138 | expect(container.textContent).toEqual('loading');
139 | act(() => jest.runAllTimers());
> 140 | expect(container.textContent).toEqual('42');
| ^
141 | });
142 |
143 | test('Parameterized fallback with atom and async', () => {
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_atomFamily-test.js:140:33)
● Parameterized fallback with atom and async
expect(received).toEqual(expected) // deep equality
Expected: "\"async\""
Received: "loading"
167 | expect(asyncCont.textContent).toEqual('loading');
168 | act(() => jest.runAllTimers());
> 169 | expect(asyncCont.textContent).toEqual('"async"');
| ^
170 | });
171 |
172 | test('atomFamily with scope', () => {
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_atomFamily-test.js:169:33)
● atomFamily with scope
expect(received).toBe(expected) // Object.is equality
Expected: "default"
Received: "xValue1"
191 | set(scopeForParamAtom, 'bar');
192 |
> 193 | expect(get(paramAtomWithScope({k: 'x'}))).toBe('default');
| ^
194 | expect(get(paramAtomWithScope({k: 'y'}))).toBe('default');
195 | set(paramAtomWithScope({k: 'x'}), 'xValue2');
196 | expect(get(paramAtomWithScope({k: 'x'}))).toBe('xValue2');
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_atomFamily-test.js:193:45)
● atomFamily with parameterized scope
expect(received).toBe(expected) // Object.is equality
Expected: "default"
Received: "xValue1"
228 | expect(get(paramScopeForParamAtom({namespace: 'foo'}))).toBe('eggs');
229 |
> 230 | expect(get(paramAtomWithParamScope({n: 'foo', k: 'x'}))).toBe('default');
| ^
231 | expect(get(paramAtomWithParamScope({n: 'foo', k: 'y'}))).toBe('default');
232 | set(paramAtomWithParamScope({n: 'foo', k: 'x'}), 'xValue2');
233 | expect(get(paramAtomWithParamScope({n: 'foo', k: 'x'}))).toBe('xValue2');
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_atomFamily-test.js:230:60)
FAIL src/recoil_values/__tests__/Recoil_WaitFor-test.js
● noWait - resolve
expect(received).toBe(expected) // Object.is equality
Expected: 42
Received: {}
58 | resolve(42);
59 | act(() => jest.runAllTimers());
> 60 | expect(getValue(noWait(dep)).contents).toBe(42);
| ^
61 | await pTest;
62 | });
63 |
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_WaitFor-test.js:60:42)
● noWait - reject
expect(received).toBeInstanceOf(expected)
Expected constructor: MyError
Received constructor: Promise
72 | reject(new MyError());
73 | act(() => jest.runAllTimers());
> 74 | expect(getValue(noWait(dep)).contents).toBeInstanceOf(MyError);
| ^
75 | await pTest;
76 | });
77 |
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_WaitFor-test.js:74:42)
● waitFor - resolve to values
expect(received).toBe(expected) // Object.is equality
Expected: 0
Received: {}
128 | resolveA(0);
129 | act(() => jest.runAllTimers());
> 130 | expect(getValue(waitForNone(deps))[0].contents).toBe(0);
| ^
131 | expect(getValue(waitForNone(deps))[1].contents).toBeInstanceOf(Promise);
132 | expect(getValue(waitForAny(deps))[0].contents).toBe(0);
133 | expect(getValue(waitForAny(deps))[1].contents).toBeInstanceOf(Promise);
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_WaitFor-test.js:130:51)
● waitFor - rejected
expect(received).toBeInstanceOf(expected)
Expected constructor: Error1
Received constructor: Promise
190 | rejectA(new Error1());
191 | act(() => jest.runAllTimers());
> 192 | expect(getValue(waitForNone(deps))[0].contents).toBeInstanceOf(Error1);
| ^
193 | expect(getValue(waitForNone(deps))[1].contents).toBeInstanceOf(Promise);
194 | expect(get(waitForAny(deps))).toBeInstanceOf(Promise);
195 | const anyTest2 = expect(get(waitForAny(deps))).rejects.toBeInstanceOf(Error1);
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_WaitFor-test.js:192:51)
● waitFor - resolve then reject
expect(received).toBe(expected) // Object.is equality
Expected: 0
Received: {}
229 | rejectB(new Error2());
230 | act(() => jest.runAllTimers());
> 231 | expect(getValue(waitForNone(deps))[0].contents).toBe(0);
| ^
232 | expect(getValue(waitForNone(deps))[1].contents).toBeInstanceOf(Error2);
233 | expect(getValue(waitForAny(deps))[0].contents).toBe(0);
234 | expect(getValue(waitForAny(deps))[1].contents).toBeInstanceOf(Error2);
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_WaitFor-test.js:231:51)
● waitFor - reject then resolve
expect(received).toBeInstanceOf(expected)
Expected constructor: Error1
Received constructor: Promise
277 | resolveB(1);
278 | act(() => jest.runAllTimers());
> 279 | expect(getValue(waitForNone(deps))[0].contents).toBeInstanceOf(Error1);
| ^
280 | expect(getValue(waitForNone(deps))[1].contents).toBe(1);
281 | expect(getValue(waitForAny(deps))[0].contents).toBeInstanceOf(Error1);
282 | expect(getValue(waitForAny(deps))[1].contents).toBe(1);
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_WaitFor-test.js:279:51)
● waitFor - named dependency version
expect(received).toBe(expected) // Object.is equality
Expected: 0
Received: {}
335 | resolveA(0);
336 | act(() => jest.runAllTimers());
> 337 | expect(getValue(waitForNone(deps)).a.contents).toBe(0);
| ^
338 | expect(getValue(waitForNone(deps)).b.contents).toBeInstanceOf(Promise);
339 | expect(getValue(waitForAny(deps)).a.contents).toBe(0);
340 | expect(getValue(waitForAny(deps)).b.contents).toBeInstanceOf(Promise);
at Object.<anonymous> (src/recoil_values/__tests__/Recoil_WaitFor-test.js:337:50)
PASS src/core/__tests__/Recoil_RecoilValueInterface-test.js
PASS src/core/__tests__/Recoil_core-test.js
PASS src/hooks/__tests__/Recoil_useRecoilInterface-test.js
PASS src/util/__tests__/Recoil_stableStringify-test.js
PASS src/recoil_values/__tests__/Recoil_selectorFamily-test.js
PASS src/caches/__tests__/Recoil_cacheWithReferenceEquality-test.js
PASS src/recoil_values/__tests__/Recoil_constSelector-test.js
FAIL src/hooks/__tests__/Recoil_PublicHooks-test.js
● Console
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`ReadsAtom`). To locate the bad setState() call inside `ReadsAtom`, follow the stack trace as described in https://fb.me/setstate-in-render
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:46:11
console.error
Error: Uncaught [Error: ERROR]
at reportException (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:62:24)
at innerInvokeEventListeners (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:346:9)
at invokeEventListeners (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:281:3)
at HTMLUnknownElementImpl._dispatch (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:228:9)
at HTMLUnknownElementImpl.dispatchEvent (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:101:17)
at HTMLUnknownElement.dispatchEvent (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:207:34)
at Object.invokeGuardedCallbackDev (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:237:16)
at invokeGuardedCallback (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:292:31)
at beginWork$1 (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:23203:7)
at performUnitOfWork (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:22157:12) Error: ERROR
at /Users/vjeux/random/Recoil/src/recoil_values/Recoil_error.js:22:11
at get (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selectorFamily.js:108:32)
at evaluateSelectorFunction (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:281:22)
at computeAndSubscribeSelector (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:338:9)
at getFromCache (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:248:49)
at Object.get (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:385:12)
at getNodeLoadable (/Users/vjeux/random/Recoil/src/core/Recoil_FunctionalCore.js:46:23)
at get (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:270:30)
at get (/Users/vjeux/random/Recoil/src/hooks/__tests__/Recoil_PublicHooks-test.js:69:24)
at evaluateSelectorFunction (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:281:22)
at computeAndSubscribeSelector (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:338:9)
at getFromCache (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:248:49)
at Object.get (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:385:12)
at getNodeLoadable (/Users/vjeux/random/Recoil/src/core/Recoil_FunctionalCore.js:46:23)
at replacer (/Users/vjeux/random/Recoil/src/core/Recoil_RecoilValue.js:48:38)
at Object.replaceState (/Users/vjeux/random/Recoil/src/components/Recoil_RecoilRoot.react.js:212:22)
at fn (/Users/vjeux/random/Recoil/src/core/Recoil_RecoilValue.js:46:11)
at Object.trace (/Users/vjeux/random/Recoil/src/util/Recoil_Tracing.js:38:10)
at getRecoilValueAsLoadable (/Users/vjeux/random/Recoil/src/core/Recoil_RecoilValue.js:45:11)
at useRecoilValueLoadable (/Users/vjeux/random/Recoil/src/hooks/Recoil_Hooks.js:224:14)
at Object.getRecoilValue (/Users/vjeux/random/Recoil/src/hooks/Recoil_Hooks.js:228:24)
at useRecoilValue (/Users/vjeux/random/Recoil/src/hooks/Recoil_Hooks.js:265:25)
at ReadsAtom (/Users/vjeux/random/Recoil/src/testing/Recoil_TestingUtils.js:170:26)
at renderWithHooks (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:14803:18)
at mountIndeterminateComponent (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:17482:13)
at beginWork (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:18596:16)
at beginWork$1 (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:23179:14)
at performUnitOfWork (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:22157:12)
at workLoopSync (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:22130:22)
at performSyncWorkOnRoot (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:21756:9)
at scheduleUpdateOnFiber (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:21188:7)
at updateContainer (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:24373:3)
at /Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:24758:7
at unbatchedUpdates (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:21903:12)
at legacyRenderSubtreeIntoContainer (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:24757:5)
at Object.render (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:24840:10)
at /Users/vjeux/random/Recoil/src/testing/Recoil_TestingUtils.js:101:14
at batchedUpdates$1 (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:21856:12)
at act (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom-test-utils.development.js:929:14)
at renderElements (/Users/vjeux/random/Recoil/src/testing/Recoil_TestingUtils.js:100:3)
at Object.<anonymous> (/Users/vjeux/random/Recoil/src/hooks/__tests__/Recoil_PublicHooks-test.js:303:21)
at Object.asyncJestTest (/Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:100:37)
at /Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/queueRunner.js:47:12
at new Promise (<anonymous>)
at mapper (/Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/queueRunner.js:30:19)
at /Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/queueRunner.js:77:41
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at VirtualConsole.<anonymous> (node_modules/jsdom/lib/jsdom/virtual-console.js:29:45)
at reportException (node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:66:28)
at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:346:9)
at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:281:3)
at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:228:9)
at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:101:17)
at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:207:34)
console.error
The above error occurred in the <ReadsAtom> component:
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
React will try to recreate this component tree from scratch using the error boundary you provided, ErrorBoundary.
at logCapturedError (node_modules/react-dom/cjs/react-dom.development.js:19527:21)
at logError (node_modules/react-dom/cjs/react-dom.development.js:19564:5)
at ErrorBoundary.update.payload (node_modules/react-dom/cjs/react-dom.development.js:20723:7)
at getStateFromUpdate (node_modules/react-dom/cjs/react-dom.development.js:12293:35)
at processUpdateQueue (node_modules/react-dom/cjs/react-dom.development.js:12424:22)
at resumeMountClassInstance (node_modules/react-dom/cjs/react-dom.development.js:13091:3)
at updateClassComponent (node_modules/react-dom/cjs/react-dom.development.js:17105:20)
at beginWork (node_modules/react-dom/cjs/react-dom.development.js:18620:16)
console.error
Error: Uncaught [Error: ERROR]
at reportException (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:62:24)
at innerInvokeEventListeners (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:346:9)
at invokeEventListeners (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:281:3)
at HTMLUnknownElementImpl._dispatch (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:228:9)
at HTMLUnknownElementImpl.dispatchEvent (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:101:17)
at HTMLUnknownElement.dispatchEvent (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:207:34)
at Object.invokeGuardedCallbackDev (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:237:16)
at invokeGuardedCallback (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:292:31)
at beginWork$1 (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:23203:7)
at performUnitOfWork (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:22157:12) Error: ERROR
at get (/Users/vjeux/random/Recoil/src/testing/Recoil_TestingUtils.js:128:29)
at evaluateSelectorFunction (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:281:22)
at computeAndSubscribeSelector (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:338:9)
at getFromCache (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:248:49)
at Object.get (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:385:12)
at getNodeLoadable (/Users/vjeux/random/Recoil/src/core/Recoil_FunctionalCore.js:46:23)
at get (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:270:30)
at get (/Users/vjeux/random/Recoil/src/hooks/__tests__/Recoil_PublicHooks-test.js:87:24)
at evaluateSelectorFunction (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:281:22)
at computeAndSubscribeSelector (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:338:9)
at getFromCache (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:248:49)
at Object.get (/Users/vjeux/random/Recoil/src/recoil_values/Recoil_selector_OLD.js:385:12)
at getNodeLoadable (/Users/vjeux/random/Recoil/src/core/Recoil_FunctionalCore.js:46:23)
at replacer (/Users/vjeux/random/Recoil/src/core/Recoil_RecoilValue.js:48:38)
at Object.replaceState (/Users/vjeux/random/Recoil/src/components/Recoil_RecoilRoot.react.js:212:22)
at fn (/Users/vjeux/random/Recoil/src/core/Recoil_RecoilValue.js:46:11)
at Object.trace (/Users/vjeux/random/Recoil/src/util/Recoil_Tracing.js:38:10)
at getRecoilValueAsLoadable (/Users/vjeux/random/Recoil/src/core/Recoil_RecoilValue.js:45:11)
at useRecoilValueLoadable (/Users/vjeux/random/Recoil/src/hooks/Recoil_Hooks.js:224:14)
at Object.getRecoilValue (/Users/vjeux/random/Recoil/src/hooks/Recoil_Hooks.js:228:24)
at useRecoilValue (/Users/vjeux/random/Recoil/src/hooks/Recoil_Hooks.js:265:25)
at ReadsAtom (/Users/vjeux/random/Recoil/src/testing/Recoil_TestingUtils.js:170:26)
at renderWithHooks (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:14803:18)
at mountIndeterminateComponent (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:17482:13)
at beginWork (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:18596:16)
at beginWork$1 (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:23179:14)
at performUnitOfWork (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:22157:12)
at workLoopSync (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:22130:22)
at performSyncWorkOnRoot (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:21756:9)
at scheduleUpdateOnFiber (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:21188:7)
at updateContainer (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:24373:3)
at /Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:24758:7
at unbatchedUpdates (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:21903:12)
at legacyRenderSubtreeIntoContainer (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:24757:5)
at Object.render (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:24840:10)
at /Users/vjeux/random/Recoil/src/testing/Recoil_TestingUtils.js:101:14
at batchedUpdates$1 (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:21856:12)
at act (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom-test-utils.development.js:929:14)
at renderElements (/Users/vjeux/random/Recoil/src/testing/Recoil_TestingUtils.js:100:3)
at Object.<anonymous> (/Users/vjeux/random/Recoil/src/hooks/__tests__/Recoil_PublicHooks-test.js:311:21)
at Object.asyncJestTest (/Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:100:37)
at /Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/queueRunner.js:47:12
at new Promise (<anonymous>)
at mapper (/Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/queueRunner.js:30:19)
at /Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/queueRunner.js:77:41
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at VirtualConsole.<anonymous> (node_modules/jsdom/lib/jsdom/virtual-console.js:29:45)
at reportException (node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:66:28)
at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:346:9)
at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:281:3)
at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:228:9)
at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:101:17)
at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:207:34)
console.error
The above error occurred in the <ReadsAtom> component:
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
React will try to recreate this component tree from scratch using the error boundary you provided, ErrorBoundary.
at logCapturedError (node_modules/react-dom/cjs/react-dom.development.js:19527:21)
at logError (node_modules/react-dom/cjs/react-dom.development.js:19564:5)
at ErrorBoundary.update.payload (node_modules/react-dom/cjs/react-dom.development.js:20723:7)
at getStateFromUpdate (node_modules/react-dom/cjs/react-dom.development.js:12293:35)
at processUpdateQueue (node_modules/react-dom/cjs/react-dom.development.js:12424:22)
at updateClassInstance (node_modules/react-dom/cjs/react-dom.development.js:13185:3)
at updateClassComponent (node_modules/react-dom/cjs/react-dom.development.js:17107:20)
at beginWork (node_modules/react-dom/cjs/react-dom.development.js:18620:16)
console.error
Error: Uncaught [Error: ]
at reportException (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:62:24)
at innerInvokeEventListeners (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:346:9)
at invokeEventListeners (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:281:3)
at HTMLUnknownElementImpl._dispatch (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:228:9)
at HTMLUnknownElementImpl.dispatchEvent (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:101:17)
at HTMLUnknownElement.dispatchEvent (/Users/vjeux/random/Recoil/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:207:34)
at Object.invokeGuardedCallbackDev (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:237:16)
at invokeGuardedCallback (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:292:31)
at beginWork$1 (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:23203:7)
at performUnitOfWork (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:22157:12) Error:
at /Users/vjeux/random/Recoil/src/hooks/__tests__/Recoil_PublicHooks-test.js:323:20
at batchedUpdates$1 (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom.development.js:21856:12)
at act (/Users/vjeux/random/Recoil/node_modules/react-dom/cjs/react-dom-test-utils.development.js:929:14)
at Object.<anonymous> (/Users/vjeux/random/Recoil/src/hooks/__tests__/Recoil_PublicHooks-test.js:323:3)
at Object.asyncJestTest (/Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:100:37)
at /Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/queueRunner.js:47:12
at new Promise (<anonymous>)
at mapper (/Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/queueRunner.js:30:19)
at /Users/vjeux/random/Recoil/node_modules/jest-jasmine2/build/queueRunner.js:77:41
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at VirtualConsole.<anonymous> (node_modules/jsdom/lib/jsdom/virtual-console.js:29:45)
at reportException (node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:66:28)
at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:346:9)
at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:281:3)
at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:228:9)
at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:101:17)
at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:207:34)
console.error
The above error occurred in the <ReadsAtom> component:
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
React will try to recreate this component tree from scratch using the error boundary you provided, ErrorBoundary.
at logCapturedError (node_modules/react-dom/cjs/react-dom.development.js:19527:21)
at logError (node_modules/react-dom/cjs/react-dom.development.js:19564:5)
at ErrorBoundary.update.payload (node_modules/react-dom/cjs/react-dom.development.js:20723:7)
at getStateFromUpdate (node_modules/react-dom/cjs/react-dom.development.js:12293:35)
at processUpdateQueue (node_modules/react-dom/cjs/react-dom.development.js:12424:22)
at updateClassInstance (node_modules/react-dom/cjs/react-dom.development.js:13185:3)
at updateClassComponent (node_modules/react-dom/cjs/react-dom.development.js:17107:20)
at beginWork (node_modules/react-dom/cjs/react-dom.development.js:18620:16)
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`mockConstructor`). To locate the bad setState() call inside `mockConstructor`, follow the stack trace as described in https://fb.me/setstate-in-render
in mockConstructor
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:46:11
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`SetsDuringRendering`). To locate the bad setState() call inside `SetsDuringRendering`, follow the stack trace as described in https://fb.me/setstate-in-render
in SetsDuringRendering
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:63:11
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`ReadsAtomWithoutSuspense`). To locate the bad setState() call inside `ReadsAtomWithoutSuspense`, follow the stack trace as described in https://fb.me/setstate-in-render
in ReadsAtomWithoutSuspense
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:46:11
console.error
Warning: An update to ReadsAtomWithoutSuspense 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in ReadsAtomWithoutSuspense
in Suspense
in ErrorBoundary
in RecoilRoot
148 | return;
149 | }
> 150 | forceUpdate([]);
| ^
151 | }
152 |
153 | differenceSets(
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at forceUpdate (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at updateState (src/hooks/Recoil_Hooks.js:150:7)
at fn (src/hooks/Recoil_Hooks.js:167:13)
at Object.trace (src/util/Recoil_Tracing.js:38:10)
at src/hooks/Recoil_Hooks.js:166:19
console.error
Warning: An update to ReadsAtomWithoutSuspense 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in ReadsAtomWithoutSuspense
in Suspense
in ErrorBoundary
in RecoilRoot
148 | return;
149 | }
> 150 | forceUpdate([]);
| ^
151 | }
152 |
153 | differenceSets(
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at forceUpdate (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at updateState (src/hooks/Recoil_Hooks.js:150:7)
at fn (src/hooks/Recoil_Hooks.js:167:13)
at Object.trace (src/util/Recoil_Tracing.js:38:10)
at src/hooks/Recoil_Hooks.js:166:19
console.error
Warning: An update to ReadsAtom 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 */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act
in ReadsAtom
in Suspense
in ErrorBoundary
in RecoilRoot
148 | return;
149 | }
> 150 | forceUpdate([]);
| ^
151 | }
152 |
153 | differenceSets(
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnIfNotCurrentlyActingUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23284:7)
at forceUpdate (node_modules/react-dom/cjs/react-dom.development.js:15656:9)
at updateState (src/hooks/Recoil_Hooks.js:150:7)
at fn (src/hooks/Recoil_Hooks.js:167:13)
at Object.trace (src/util/Recoil_Tracing.js:38:10)
at src/hooks/Recoil_Hooks.js:166:19
console.error
Warning: Cannot update a component (`Batcher`) while rendering a different component (`MyReadsAtom`). To locate the bad setState() call inside `MyReadsAtom`, follow the stack trace as described in https://fb.me/setstate-in-render
in MyReadsAtom
in Switch
in Suspense
in ErrorBoundary
in RecoilRoot
76 |
77 | const [_, setState] = useState([]);
> 78 | props.setNotifyBatcherOfChange(() => setState({}));
| ^
79 |
80 | useEffect(() => {
81 | // enqueueExecution runs this function immediately; it is only used to
at printWarning (node_modules/react-dom/cjs/react-dom.development.js:88:30)
at error (node_modules/react-dom/cjs/react-dom.development.js:60:5)
at warnAboutRenderPhaseUpdatesInDEV (node_modules/react-dom/cjs/react-dom.development.js:23241:15)
at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21165:3)
at setState (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
at src/components/Recoil_RecoilRoot.react.js:78:40
at Object.replaceState (src/components/Recoil_RecoilRoot.react.js:221:5)
at src/core/Recoil_RecoilValue.js:46:11
● Selectors can depend on async selectors
expect(received).toEqual(expected) // deep equality
Expected: "2"
Received: "loading"
234 |
235 | act(() => jest.runAllTimers());
> 236 | expect(container.textContent).toEqual('2');
| ^
237 |
238 | act(() => updateValue(1));
239 | expect(container.textContent).toEqual('loading');
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:236:33)
● Async selectors can depend on async selectors
expect(received).toEqual(expected) // deep equality
Expected: "2"
Received: "loading"
256 |
257 | act(() => jest.runAllTimers());
> 258 | expect(container.textContent).toEqual('2');
| ^
259 |
260 | act(() => updateValue(1));
261 | expect(container.textContent).toEqual('loading');
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:258:33)
● Dep of upstream selector can change while pending
expect(received).toEqual(expected) // deep equality
Expected: 2
Received: 1
288 | act(() => updateValue(1));
289 | await flushPromisesAndTimers();
> 290 | expect(upstreamResolvers.length).toEqual(2);
| ^
291 | expect(downstreamResolvers.length).toEqual(1);
292 | upstreamResolvers[1][0](123);
293 | await flushPromisesAndTimers();
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:290:36)
● Rejected promises are propogated through selectors (immediate rejection)
expect(received).toEqual(expected) // deep equality
Expected: "error"
Received: "loading"
312 | expect(container.textContent).toEqual('loading');
313 | await flushPromisesAndTimers();
> 314 | expect(container.textContent).toEqual('error');
| ^
315 | });
316 |
317 | test('Rejected promises are propogated through selectors (later rejection)', async () => {
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:314:33)
● Rejected promises are propogated through selectors (later rejection)
expect(received).toEqual(expected) // deep equality
Expected: "error"
Received: "loading"
323 | act(() => reject(new Error()));
324 | await flushPromisesAndTimers();
> 325 | expect(container.textContent).toEqual('error');
| ^
326 | });
327 |
328 | test('Component subscribed to atom is rendered just once', () => {
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:325:33)
● Basic async selector test
expect(received).toEqual(expected) // deep equality
Expected: "1"
Received: "loading"
870 | expect(container.textContent).toEqual('loading');
871 | act(() => jest.runAllTimers());
> 872 | expect(container.textContent).toEqual('1');
| ^
873 | // Changing dependency makes it go back to loading, then to show new value:
874 | act(() => updateValue(1));
875 | expect(container.textContent).toEqual('loading');
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:872:33)
● Ability to not use Suspense
expect(received).toEqual(expected) // deep equality
Expected: "1"
Received: "loading not with suspense"
905 | expect(container.textContent).toEqual('loading not with suspense');
906 | act(() => jest.runAllTimers());
> 907 | expect(container.textContent).toEqual('1');
| ^
908 | // Changing dependency makes it go back to loading, then to show new value:
909 | act(() => updateValue(1));
910 | expect(container.textContent).toEqual('loading not with suspense');
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:907:33)
● Ability to not use Suspense - with value instead of loadable
expect(received).toEqual(expected) // deep equality
Expected: "1"
Received: "loading not with suspense"
935 | expect(container.textContent).toEqual('loading not with suspense');
936 | act(() => jest.runAllTimers());
> 937 | expect(container.textContent).toEqual('1');
| ^
938 | // Changing dependency makes it go back to loading, then to show new value:
939 | act(() => updateValue(1));
940 | expect(container.textContent).toEqual('loading not with suspense');
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:937:33)
● Selector can alternate between synchronous and asynchronous
expect(received).toEqual(expected) // deep equality
Expected: "1"
Received: "loading"
976 | expect(container.textContent).toEqual('loading');
977 | advanceTimersBy(101);
> 978 | expect(container.textContent).toEqual('1');
| ^
979 |
980 | // Transition from async to sync (with async being in hasValue state):
981 | act(() => updateValue(2));
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:978:33)
● Async selectors do not re-query when re-subscribed from having no subscribers
expect(received).toBe(expected) // Object.is equality
Expected: 2
Received: 1
1006 | act(() => updateValue(2));
1007 | await flushPromisesAndTimers();
> 1008 | expect(resolvers.length).toBe(2);
| ^
1009 | resolvers[1][0]('hello');
1010 | await flushPromisesAndTimers();
1011 | expect(container.textContent).toEqual('"hello"');
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:1008:28)
● Can move out of suspense by changing deps
expect(received).toEqual(expected) // deep equality
Expected: 2
Received: 1
1056 | act(() => updateValue(1));
1057 | await flushPromisesAndTimers();
> 1058 | expect(resolvers.length).toEqual(2);
| ^
1059 | expect(container.textContent).toEqual('loading');
1060 | // When the faster second request resolves, we should see its result:
1061 | resolvers[1][0]('hello');
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:1058:28)
● Can use an already-resolved promise
expect(received).toEqual(expected) // deep equality
Expected: "1"
Received: "loading"
1077 | const container = renderElements(<><Component /><ReadsAtom atom={sel} /></>);
1078 | await flushPromisesAndTimers();
> 1079 | expect(container.textContent).toEqual('1');
| ^
1080 | act(() => updateValue(1));
1081 | await flushPromisesAndTimers();
1082 | expect(container.textContent).toEqual('2');
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:1079:33)
● Resolution of suspense causes render just once
expect(jest.fn()).toHaveBeenCalledTimes(expected)
Expected number of calls: 3
Received number of calls: 1
1092 | // Begins in loading state, then shows initial value:
1093 | act(() => jest.runAllTimers());
> 1094 | expect(ReadComp).toHaveBeenCalledTimes(3);
| ^
1095 | // Changing dependency makes it go back to loading, then to show new value:
1096 | act(() => updateValue(1));
1097 | act(() => jest.runAllTimers());
at Object.<anonymous> (src/hooks/__tests__/Recoil_PublicHooks-test.js:1094:20)
PASS src/recoil_values/__tests__/Recoil_atom-test.js
PASS src/recoil_values/__tests__/Recoil_errorSelector-test.js
PASS src/adt/__tests__/Recoil_ArrayKeyedMap-test.js
PASS src/caches/__tests__/Recoil_cacheWithValueEquality-test.js
PASS src/caches/__tests__/Recoil_cacheMostRecent-test.js
Test Suites: 8 failed, 12 passed, 20 total
Tests: 43 failed, 110 passed, 153 total
Snapshots: 0 total
Time: 4.082 s
Ran all test suites matching /src\/Recoil.js|src\/RecoilUtils.js|src\/adt|src\/caches|src\/components|src\/core|src\/hooks|src\/lib|src\/npm|src\/recoil_values|src\/testing|src\/util/i.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
[/Users/vjeux/random/Recoil] [vjeux@macbook-pro-98]
(517) >>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment