Edit This Page

Working with jsdom & mount

If you plan on using mount, it requires jsdom. Jsdom requires node 4 or above. As a result, if you want to use mount, you will need to make sure node 4 or iojs is on your machine.

Switching between node versions

Some times you may need to switch between different versions of node, you can use a CLI tool called nvm to quickly switch between node versions.

To install NVM:

brew install nvm
nvm install 4

Now your machine will be running Node 4. You can use the nvm use command to switch between the two environments:

nvm use 0.12
nvm use 4

Preventing tests from failing on old versions

If you are worried about tests not passing on versions of node that don't support jsdom, Enzyme comes with a helper function to wrap your tests in a safety layer such that any tests written inside of that function will be skipped if jsdom is not available. (Note that this is for mocha only).

import { mount, shallow } from 'enzyme';

describe('MyComponent', () => {
  describeWithDOM('interaction', () => {
    // these tests will get skipped if jsdom is not available...
    it('should do something', () => {
      const wrapper = mount(<MyComponent />);
      // ...
    });
  });
  describe('non-interaction', () => {
    // these tests will always run
    it('should do something', () => {
      const wrapper = shallow(<MyComponent />);
      // ...
    });
  });
});