Skip Navigation

Set up a React App for Testing with Jest and Enzyme

It's been awhile since I've set up a React app for testing with Jest and Enzyme. Since I had to look up more than one of these steps to remind myself how to accomplish this, I decided to write a super quick guide in case it helps anyone else.

Dec. 8th Correction

Enzyme is not yet compatible with React 17. You should make sure the highest version of React you are using is 16.14.0 if you want to use Enzyme with your tests. This PR will add an adapter for React 17. Please do not ask them when it will be done, it will be done when they get it done!

Step 1: Create the app with create-react-app

This requires having npx installed. You can read about it here.

1npx create-react-app <app-name>

Step 2: If you use Sass modules, like me, install node-sass

At the time of this writing, node-sass@5.0.0 in incompatible and node-sass@4.14.1 must be installed instead. There's a Stack Overflow answer about it here.

1yarn add node-sass@4.14.1

Step 3. Install the dev dependencies for Enzyme

The --dev option is what saves these under devDependencies in your package.json file. Why do they need to be under devDependencies? Because these kinds of dependences are "Packages that are only needed for local development and testing." You can read a little more on that here.

1yarn add --dev enzyme enzyme-adapter-react-16

Step 4. Configure Enzyme with an adapter in setupTests.js

Enzyme needs to know what adapter you want to use. We tell it in the setupTests.js file in the src directory of your project. You can get more details about setting up Enzyme here.

Your setupTests.js should only have some comments and one import statement right now. Just add these lines right after that import:

1import Enzyme from 'enzyme';
2import Adapter from 'enzyme-adapter-react-16';
4Enzyme.configure({ adapter: new Adapter() });

Step 5. Get to testing! 💪

Everything you need is installed and now you just need to write up some tests. Here are some Jest and Enzyme docs to help you get started:

Back to Top