How to write a Jest configuration file
I figured out that the config file is JSON.
{
"testPathDirs": ["coredata/src"]
}
Unfortunately I found nowhere in the documentation a hint about this.
Seems to me you can configure jest directly within your package.json
, see https://github.com/shidhincr/react-jest-gulp-jspm-seed/blob/master/package.json.
{
"name": "react-jest-gulp-seed",
"version": "1.0.0",
"description": "Seed for React Jest Gulp Project",
"main": "index.js",
"scripts": {
"test": "jest",
"postinstall": "jspm install"
},
"jest": {
"scriptPreprocessor": "./preprocessor.js",
"testPathIgnorePatterns": [
"/node_modules/",
"/jspm_packages"
],
"unmockedModulePathPatterns": [
"./node_modules/react"
]
},
"author": "Shidhin CR <[email protected]> (http://www.undefinednull.com/)",
"license": "ISC",
"dependencies": {
"del": "^1.1.1",
"gulp": "^3.8.11",
"gulp-filter": "^2.0.2",
"gulp-load-plugins": "^0.10.0",
"gulp-react": "^3.0.1",
"gulp-shell": "^0.4.1",
"harmonize": "^1.4.1",
"jest-cli": "^0.4.1",
"jspm": "^0.15.5",
"react": "^0.13.2",
"react-tools": "^0.13.2",
"run-sequence": "^1.1.0"
},
"devDependencies": {
"browser-sync": "^2.7.1",
"gulp": "^3.8.11"
},
"jspm": {
"directories": {},
"dependencies": {
"react": "npm:react@^0.13.2"
},
"devDependencies": {
"babel": "npm:babel-core@^5.1.13",
"babel-runtime": "npm:babel-runtime@^5.1.13",
"core-js": "npm:core-js@^0.9.4"
}
}
}
As of the current date of October 5, 2018, I was able to setup a jest configuration file with ease, without it requiring it to be in JSON format.
My package.json scripts section:
"scripts": {
"start": "node server.js",
"dev": "webpack-dev-server --hot --inline",
"test": "jest --config ./jest-config.js",
"build": "webpack",
"postinstall": "webpack"
}
I decided to keep the jest-config file in the root path alongside package.json, so that's where it is pointing to, but you can put it anywhere you want. Here is the configuration file, albeit a little short:
module.exports = {
verbose: true,
setupTestFrameworkScriptFile: "./enzyme.js",
roots: [
"../__tests__"
],
modulePaths: [
"./__stubs__"
],
moduleNameMapper: {
".scss$": "scss-stub.js"
}
}
The Jest documentation in the "Configuring Jest" section (link here) says that you can create it with a module.exports object. They include a caveat that says, "Please keep in mind that the resulting configuration must be JSON-serializable", which adds to the confusion. "Delightful Javascript Testing!" Hah!
P.S. The roots property in the config tells Jest where to look for all of your tests. Thought it might help.
For JEST V20+:
{
"roots": ["__tests__/"]
}
For v 20-, you will get following warning if you use testPathDirs:
Deprecation Warning:
Option "testPathDirs" was replaced by "roots".
Jest now treats your current configuration as: { "roots": ["tests/unit/"] }
Please update your configuration.