I'm tasked with reworking the unit tests of our rather large code base, and I'd love to use Enzyme for this, but I'm having problems running it. Here are the details:
After adding the dependencies (yarn add enzyme enzyme-adapter-react-16), configuring the adapter like in the docs, and running our tests I get the following error (instead of the tests' output):
Uncaught TypeError: inherits is not a function
at webpack:///~/cheerio/~/parse5/lib/extensions/position_tracking/preprocessor_mixin.js
So enzyme depends on cheerio, which in turn depends on parse5. In parse5 class inheritance is established by calling require('util').inherit(), but this function is undefined as the error states.
I've tried many things to make this work, but so far the only thing that actually works is manually adding the inherit function to every file in node_modules/cheerio/node_modules/parse5/lib where it is needed.
Other workarounds tried:
util as a project wide dependency (i.e. yarn add util)yarn add util with additional resolve.alias in webpack configutil in node_modules/cheerio/node_modules/parse5node_modules, clear npm cache, re-install everythingBut anything I do, as soon as I configure the Adapter I get the TypeError mentioned.
I'm not even sure if this is considered an enzyme issue, but everything apart from enzyme works on our end.
Other stuff I'm using that might be relevant: Webpack 2.2.1, Karma, HeadlessChrome, Windows 10, node 6.11.0, ES6 with babel.
cheerio browserifies fine ( https://wzrd.in/standalone/cheerio@^1.0.0-0 ) so my suspicion is that your webpack settings might be causing issues.
As for util, that's a node core module, so you definitely don't want it installed from npm.
I'm having the same issue. After investigation, I found there's a webpack alias (util: "src/...") in my project.
fix the incorrect alias may help to resolve this issue.
Closing; happy to reopen if needed.
Most helpful comment
I'm having the same issue. After investigation, I found there's a webpack alias (util: "src/...") in my project.
fix the incorrect alias may help to resolve this issue.