jest-runner-mocha-next
v3.2.0
Published
An experimental Mocha runner for Jest
Readme
It's a fork!
It is an experimental fork of jest-runner-mocha with some amazing features and fixes:
- Support for mocha custom version
- Support for
setupFilesAfterEnv - Support for custom
clearMocksimplementation (ex. for sinon) - Support for jest flag
coverageProviderv8(node 10+ only) - See more in changelog!
Usage
Install
Install jest(it needs Jest 21+) and jest-runner-mocha-next
npm install --save-dev jest jest-runner-mocha-next
Add it to your Jest config
In your package.json
{
"jest": {
"runner": "jest-runner-mocha-next"
}
}Or in jest.config.js
module.exports = {
runner: 'jest-runner-mocha-next',
}Run Jest
npx jestOptions
This project uses cosmiconfig, so you can provide config via:
- a
jest-runner-mochaproperty in yourpackage.json - a
jest-runner-mocha.config.jsJS file - a
.jest-runner-mocharcJSON file
In package.json
{
"jest-runner-mocha": {
"cliOptions": {
// Options here
},
"coverageOptions": {
// Options here
}
}
}or in jest-runner-mocha.config.js
module.exports = {
cliOptions: {
// Options here
},
"coverageOptions": {
// Options here
}
}cliOptions
jest-runner-mocha maps some mocha CLI arguments to config options. For example --ui is cliOptions.ui
|option|example
|-----|-----|
|ui|"ui": "tdd"
|timeout|"timeout": 10000
|compiler|"compiler": "./path/to/babel-register"
|file|"file": ["./path/to/include.js", "/supports/multiple/files.js"]
coverageOptions
jest-runner-mocha has some optional configuration for code coverage
|option|example|description|
|-----|-----|-----|
|useBabelRc|"useBabelRc": true|read .babelrc when instrumenting for code coverage (required if you transpile your code with babel).|
Coverage
Coverage works outside of the box, simply npx jest -- --coverage
You can also use other Jest options like coveragePathIgnorePatterns and coverageReporters
Custom clearMocks function
Just make an export with a clearMocks function in your setupFilesAfterEnv, like this:
'use strict';
const sinon = require('sinon');
const nock = require('nock');
module.exports = {
clearMocks: (suite) => {
sinon.sandbox.restore();
if(!nock.isDone()) {
console.log(`Warning: pending mocks in ${suite.file}: ${nock.pendingMocks()}`);
nock.cleanAll();
}
}
};
