After Updating my react native version, I am keeping getting errors when I run the jest tests, it is regarding the snapshot tests for react redux connected components
React: 18.2.0 React Native: 0.72.4 Redux: 4.2.1 React Redux: 8.1.2
ex: ContractDetail.js
// React
import React from 'react'
import { Provider } from 'react-redux'
// Test
import renderer from 'react-test-renderer'
// Store
import { getMockedStore } from 'test/store/utils/storeTest'
// Components
import ContractDetail from 'views/harvest/components/contract/ContractDetail'
// Constants
import { COMMODITY_CONTRACT_ID_1 } from 'test/store/data/commodityContractDataTest'
describe('ContractDetail Tests', () => {
it('ContractDetail renders correctly with snapshot', () => {
const tree = renderer
.create(
)
.toJSON()
expect(tree).toMatchSnapshot()
})
})
storeTest.js
// Test
import configureStore from 'redux-mock-store'
// Store
import store from 'test/store/data'
const mockStore = configureStore()
const mockedStore = mockStore(store)
export const getMockedStore = (state) => (state ? mockStore(state) : mockedStore)
package.json
"dependencies": {
"@bankify/redux-persist-realm": "0.1.3",
"@farmersedge/react-native-geojson-to-svg": "1.1.3",
"@google-cloud/translate": "4.1.3",
"@react-native-async-storage/async-storage": "1.19.3",
"@react-native-community/art": "1.2.0",
"@react-native-community/geolocation": "2.0.2",
"@react-native-community/netinfo": "9.3.7",
"@react-native-community/progress-bar-android": "1.0.4",
"@react-native-community/progress-view": "1.3.1",
"@react-native-community/slider": "2.0.9",
"@react-native-firebase/analytics": "14.3.1",
"@react-native-firebase/app": "14.3.1",
"@react-native-firebase/crashlytics": "14.3.1",
"@react-native-firebase/messaging": "14.3.1",
"@react-native-firebase/perf": "14.3.1",
"@react-native-mapbox-gl/maps": "8.4.0",
"@turf/boolean-crosses": "6.0.1",
"@turf/center-of-mass": "6.0.1",
"@turf/turf": "5.1.6",
"@welldone-software/why-did-you-render": "4.2.1",
"array-flat-polyfill": "1.0.1",
"art": "0.10.3",
"assert": "2.0.0",
"base64-image-loader": "1.2.1",
"buffer": "5.6.0",
"convert-units": "github:granduke/cab-convert-units#v2.3.4",
"d3": "5.9.7",
"d3-array": "2.2.0",
"d3-scale": "3.0.0",
"d3-shape": "1.3.5",
"deprecated-react-native-prop-types": "2.3.0",
"fbjs": "3.0.2",
"geojson": "0.5.0",
"geojson-tools": "0.2.2",
"geostats": "github:simogeo/geostats",
"lodash": "4.17.15",
"memoize-one": "5.0.5",
"moment": "2.24.0",
"moment-timezone": "0.5.26",
"native-fetch": "github:granduke/native-fetch",
"react": "18.2.0",
"react-native": "0.72.4",
"react-native-base64": "0.0.2",
"react-native-ble-plx": "2.0.3",
"react-native-blob-util": "0.16.4",
"react-native-calendars": "1.1291.1",
"react-native-collapsible": "1.4.0",
"react-native-config": "1.4.1",
"react-native-device-info": "10.3.0",
"react-native-floating-action": "1.22.0",
"react-native-i18n": "github:granduke/react-native-i18n",
"react-native-image-picker": "github:granduke/react-native-image-picker-all#react-native-custom-image-picker",
"react-native-mapbox-drawing-tools": "github:granduke/react-native-mapbox-drawing-tools",
"react-native-material-design": "github:granduke/react-native-material-design#CAB-6032",
"react-native-material-design-styles": "github:react-native-material-design/react-native-material-design-styles",
"react-native-navigation": "7.37.0",
"react-native-pager-view": "5.4.9",
"react-native-pdf": "6.6.2",
"react-native-permissions": "3.2.0",
"react-native-svg": "9.5.3",
"react-native-switch": "2.0.0",
"react-native-tab-view": "3.1.1",
"react-native-uuid": "2.0.1",
"react-native-vector-icons": "10.0.0",
"react-native-view-shot": "3.1.2",
"react-native-zip-archive": "5.0.6",
"react-redux": "8.1.2",
"realm": "12.1.0",
"redux": "4.2.1",
"redux-loop": "5.0.0",
"redux-persist": "6.0.0",
"redux-saga": "1.2.3",
"reselect": "4.1.8",
"supercluster": "4.1.1",
"sync-storage": "0.4.2"
},
"rnpm": {
"assets": [
"./assets/fonts"
]
},
"devDependencies": {
"@babel/cli": "7.14.8",
"@babel/core": "7.20.12",
"@babel/node": "7.14.9",
"@babel/plugin-proposal-export-default-from": "7.18.10",
"@babel/plugin-transform-flow-strip-types": "7.22.5",
"@babel/plugin-transform-private-methods": "7.22.5",
"@babel/preset-env": "7.20.2",
"@babel/runtime": "7.20.13",
"@commitlint/cli": "8.3.5",
"@commitlint/config-conventional": "8.3.4",
"@react-native/eslint-config": "0.72.2",
"@react-native/metro-config": "0.72.11",
"@tsconfig/react-native": "3.0.0",
"@types/react": "18.2.21",
"@types/react-test-renderer": "18.0.1",
"babel-eslint": "10.0.2",
"babel-jest": "29.7.0",
"babel-plugin-module-resolver": "4.1.0",
"babel-plugin-transform-runtime": "6.23.0",
"danger": "11.2.0",
"detox": "18.16.0",
"eslint": "8.19.0",
"eslint-config-standard": "13.0.1",
"eslint-config-standard-jsx": "7.0.0",
"eslint-config-standard-react": "8.0.0",
"eslint-plugin-babel": "5.3.0",
"eslint-plugin-import": "2.25.2",
"eslint-plugin-node": "9.1.0",
"eslint-plugin-prettier": "3.1.0",
"eslint-plugin-promise": "4.2.1",
"eslint-plugin-react": "7.33.2",
"eslint-plugin-standard": "4.0.0",
"fetch-mock": "7.3.9",
"flow-bin": "0.103.0",
"form-data": "2.5.0",
"glob": "7.1.4",
"googleapis": "41.0.1",
"husky": "3.0.1",
"i18n-js": "3.3.0",
"jest": "29.7.0",
"jetifier": "2.0.0",
"lint-staged": "9.2.0",
"metro-react-native-babel-preset": "0.76.8",
"node-fetch": "2.6.0",
"patch-package": "8.0.0",
"precise-commits": "1.0.2",
"prettier": "2.4.1",
"prettier-eslint": "9.0.0",
"prettier-eslint-cli": "5.0.0",
"prop-types": "15.7.2",
"react-native-mock": "0.3.1",
"react-native-schemes-manager": "2.0.0",
"react-test-renderer": "18.2.0",
"reactotron-react-native": "5.0.3",
"reactotron-redux": "3.1.3",
"reactotron-redux-saga": "4.2.3",
"readline-sync": "1.4.9",
"redux-mock-store": "1.5.4",
"redux-saga-test-plan": "4.0.6",
"rimraf": "2.6.3",
"schedule": "0.5.0",
"typescript": "4.8.4"
},
And I am keeping getting this error:
/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:1772
throw error;
^
TypeError: require(...).unstable_batchedUpdates is not a function
at unstable_batchedUpdates (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-native/Libraries/ReactNative/RendererImplementation.js:44:51)
at Object.notify (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/utils/Subscription.js:16:7)
at Object.notifyNestedSubs (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/utils/Subscription.js:76:15)
at checkForUpdates (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/components/connect.js:112:9)
at subscribeUpdates (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/components/connect.js:123:3)
at subscribe (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/components/connect.js:254:18)
at subscribeToStore (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:4747:14)
at commitHookEffectListMount (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8822:30)
at commitPassiveMountOnFiber (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9836:15)
at commitPassiveMountEffects_complete (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9803:13)
at commitPassiveMountEffects_begin (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9793:11)
at commitPassiveMountEffects (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9783:7)
at flushPassiveEffectsImpl (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10947:7)
at flushPassiveEffects (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10907:18)
at /Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10811:13
at workLoop (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:197:38)
at flushWork (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:176:18)
at Immediate.performWorkUntilDeadline (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:382:25)
at processImmediate (node:internal/timers:476:21)
Node.js v18.17.1
ReferenceError: You are trying to import a file after the Jest environment has been torn down. From src/views/harvest/components/contract/test/ContractDetail.test.js.
at unstable_batchedUpdates (node_modules/react-native/Libraries/ReactNative/RendererImplementation.js:44:10)
at Object.notify (node_modules/react-redux/lib/utils/Subscription.js:16:7)
at Object.notifyNestedSubs (node_modules/react-redux/lib/utils/Subscription.js:76:15)
at checkForUpdates (node_modules/react-redux/lib/components/connect.js:112:9)
at subscribeUpdates (node_modules/react-redux/lib/components/connect.js:123:3)
at subscribe (node_modules/react-redux/lib/components/connect.js:254:18)
at subscribeToStore (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:4747:14)
at commitHookEffectListMount (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8822:30)
at commitPassiveMountOnFiber (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9836:15)
at commitPassiveMountEffects_complete (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9803:13)
at commitPassiveMountEffects_begin (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9793:11)
at commitPassiveMountEffects (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9783:7)
at flushPassiveEffectsImpl (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10947:7)
at flushPassiveEffects (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10907:18)
at node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10811:13
at workLoop (node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:197:38)
at flushWork (node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:176:18)
at Immediate.performWorkUntilDeadline [as _onImmediate] (node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:382:25)
console.error
The above error occurred in the <Connect(OverlayModal)> component:
at ConnectFunction (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/components/connect.js:187:34)
at AlertOverlay (/Users/fepc-1014w/workspace/FE_Cab/src/components/Dialogs/AlertOverlay.js:27:34)
at View
at Component (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-native/jest/mockComponent.js:22:36)
at ManagementPanel (/Users/fepc-1014w/workspace/FE_Cab/src/components/Details/ManagementPanel.js:47:34)
at View
at Component (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-native/jest/mockComponent.js:22:36)
at RCTScrollView
at Component (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-native/jest/mockNativeComponent.js:23:36)
at ScrollViewMock (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-native/jest/mockScrollView.js:21:36)
at RCTSafeAreaView
at Component (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-native/jest/mockNativeComponent.js:23:36)
at ContractDetail (/Users/fepc-1014w/workspace/FE_Cab/src/views/harvest/components/contract/ContractDetail.js:92:34)
at _class (/Users/fepc-1014w/workspace/FE_Cab/src/models/utils/index.js:33:38)
at ConnectFunction (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/components/connect.js:187:34)
at Provider (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/components/Provider.js:49:20)
Consider adding an error boundary to your tree to customize error handling behavior.
Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries.
at logCapturedError (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:6148:27)
at update.callback (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:6168:9)
at callCallback (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:2807:16)
at commitUpdateQueue (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:2824:13)
at commitLayoutEffectOnFiber (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8999:17)
at commitLayoutMountEffects_complete (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9762:13)
at commitLayoutEffects_begin (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9751:11)
at commitLayoutEffects (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9740:7)
at commitRootImpl (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10833:9)
at commitRoot (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10766:9)
at performSyncWorkOnRoot (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10448:7)
at flushSyncCallbacks (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:1762:26)
at flushPassiveEffectsImpl (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10957:7)
at flushPassiveEffects (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10907:18)
at node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10811:13
at workLoop (node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:197:38)
at flushWork (node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:176:18)
at Immediate.performWorkUntilDeadline [as _onImmediate] (node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:382:25)
console.error
The above error occurred in the <Connect(OverlayModal)> component:
at ConnectFunction (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/components/connect.js:187:34)
at AlertOverlay (/Users/fepc-1014w/workspace/FE_Cab/src/components/Dialogs/AlertOverlay.js:27:34)
at RCTSafeAreaView
at Component (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-native/jest/mockNativeComponent.js:23:36)
at ContractDetail (/Users/fepc-1014w/workspace/FE_Cab/src/views/harvest/components/contract/ContractDetail.js:92:34)
at _class (/Users/fepc-1014w/workspace/FE_Cab/src/models/utils/index.js:33:38)
at ConnectFunction (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/components/connect.js:187:34)
at Provider (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/components/Provider.js:49:20)
Consider adding an error boundary to your tree to customize error handling behavior.
Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries.
at logCapturedError (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:6148:27)
at update.callback (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:6168:9)
at callCallback (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:2807:16)
at commitUpdateQueue (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:2824:13)
at commitLayoutEffectOnFiber (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8999:17)
at commitLayoutMountEffects_complete (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9762:13)
at commitLayoutEffects_begin (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9751:11)
at commitLayoutEffects (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9740:7)
at commitRootImpl (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10833:9)
at commitRoot (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10766:9)
at performSyncWorkOnRoot (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10448:7)
at flushSyncCallbacks (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:1762:26)
at flushPassiveEffectsImpl (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10957:7)
at flushPassiveEffects (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10907:18)
at node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10811:13
at workLoop (node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:197:38)
at flushWork (node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:176:18)
at Immediate.performWorkUntilDeadline [as _onImmediate] (node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:382:25)
/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:1772
throw error;
^
TypeError: require(...).unstable_batchedUpdates is not a function
at unstable_batchedUpdates (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-native/Libraries/ReactNative/RendererImplementation.js:44:51)
at Object.notify (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/utils/Subscription.js:16:7)
at Object.notifyNestedSubs (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/utils/Subscription.js:76:15)
at checkForUpdates (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/components/connect.js:112:9)
at subscribeUpdates (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/components/connect.js:123:3)
at subscribe (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-redux/lib/components/connect.js:254:18)
at subscribeToStore (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:4747:14)
at commitHookEffectListMount (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:8822:30)
at commitPassiveMountOnFiber (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9836:15)
at commitPassiveMountEffects_complete (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9803:13)
at commitPassiveMountEffects_begin (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9793:11)
at commitPassiveMountEffects (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9783:7)
at flushPassiveEffectsImpl (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10947:7)
at flushPassiveEffects (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10907:18)
at /Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10811:13
at workLoop (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:197:38)
at flushWork (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:176:18)
at Immediate.performWorkUntilDeadline (/Users/fepc-1014w/workspace/FE_Cab/node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:382:25)
at processImmediate (node:internal/timers:476:21)
Node.js v18.17.1
FAIL src/views/harvest/components/contract/test/ContractDetail.test.js
Can someone helps take a look at this?
What is the expected behavior? Jest snapshots tests can be passed successfully
Which browser and OS are affected by this issue? Jest
Is suspect that when you run this test in isolation it still succeeds without issue?
When I got the error
ReferenceError: You are trying to import a file after the Jest environment has been torn down. From src/views/harvest/components/contract/test/ContractDetail.test.js.it was because I had async behaviour in tests that I didn't await. Every test that renders something that does async calls. Otherwise what happens is that that test is still running in the background while a different test has started. It then fails, because it is doing something while the environment has been torn down. The failure message is shown for a different test, because that test is the test that was running in the foreground at the time.To solve it, I had to go through all my test and make them run async and end them with
Alternatively: The issue might be with jest.useFakeTimers(). You might be using those incorrectly, this might help: ReferenceError: You are trying to `import` a file after the Jest environment has been torn down
PS: please format your code for readability.