As of v0.18, React Native uses React as a dependency rather than a forked version of the library,
which means it is now possible to use enzyme's shallow
with React Native components.
Unfortunately, React Native has many environmental dependencies that can be hard to simulate without a host device.
This can be difficult when you want your test suite to run with typical Continuous Integration servers such as Travis.
A pure JS mock of React Native exists and can solve this problem in the majority of use cases.
To install it, run:
npm i --save-dev react-native-mock
Requiring or importing the /mock
entry file of this project will input the mock react-native
export into the require cache, so that your application uses the mock instead.
If you are using a test runner such as mocha, this means that you can use the --require
flag
before you run your test suite, and enzyme should "just work":
mocha --require react-native-mock/mock --recursive path/to/test/dir
/* file-that-runs-before-all-of-my-tests.js */
// This will mutate `react-native`'s require cache with `react-native-mock`'s.
require('react-native-mock/mock'); // <-- side-effects!!!