In the past, my automated testing for javascript was done in either QUnit if it was a browser app or Mocha if it was a node app. On a new project, I decided to kick the tires on Jest and thus far, I really like it. It did have a bit of a learning curve through to get it up and running, but now writing tests in it feels natural and is going well. Here are a couple of things I've learned thus far.
Jest defaults to an outdated version of jsdom
.jsdom added support for HTMLElement.dataset
in a recent version. However, due to minimum node version support differences, Jest by default uses an older version of jsdom. Switching to the latest version though turned out to be fairly easy. I installed jest-environment-jsdom-latest and changed my package.json
to run jest with "testEnvironment": "jsdom-latest".
Alternatively I could have used --env=jsdom-latest
.
Steal Configs From elsewhere
It's really easy to run down the rabbit hole of learning everything about how to set up a tool before learning if you want to actually use it. To get started, I stole some of the config from an ejected create-react-app
application and looked at the docs for using jest with webpack. That was all I needed.
Use .resolves()
for your promises
Unwrapping a promise and using .resolves()
allows me to easily unwrap promises and keep my expectation in a single chain. It feels as much like magic to me as promises did the first time I used them.
Additional Resources
- Jest Cheatsheet – contains all the default
matchers - 15 Jest tips and tricks
- API testing with Jest
Overall, I'm excited to continue playing with Jest.