systemjs-jest v1.0.0
systemjs-jest
SystemJS Builder jest plugin
Rationale
Jest is primarily intended as a unit testing framework that mocks CommonJS modules. In order to use the ES6 module loader, SystemJS and JSPM are somewhat necessary right now. This plugin is a stopgap that preprocesses jest unit tests using the SystemJS Builder.
Example
Jest is made to work with dependencies that are installed via npm. The babel-jest package would seem like a good solution, but a jest test trying to load dependencies installed with JSPM will fail:
jspm install chai=npm:chai
// example-spec.js
import {expect} from 'chai'; // doesn't work! jest can't find the module
Usage
First install the plugin:
npm install --save-dev systemjs-jest
Then, in your "jest" section in package.json, add the following:
{
"jest": {
"scriptPreprocessor": "systemjs-jest"
}
}
Now your import statements will magically work like they're supposed to!
Caveats
Sidestepping the CommonJS module loader also means that the mocking capabilities in Jest don't work with modules that are brought in using "import" statements. For a demonstration of how to mock/stub/spy on things that are using the SystemJS loader, see this example. Ideally in the future, Jest would just configure the ES6 loader in this manner and this plugin wouldn't be necessary.
Special Thanks
This project was mostly inspired by babel-jest.
9 years ago