如何编写 Jest 配置文件
How to write a Jest configuration file
我正在尝试将配置文件传递给 Jest,以便 运行 仅从给定目录进行测试。
根据文档,您可以使用 config.testPathDirs
: https://facebook.github.io/jest/docs/api.html#config-testpathdirs-array-string 并且可以调用 jest --config=<config-file>
.
遗憾的是,文档没有包含任何关于配置文件外观的描述。
我在 jest-config.js
文件中尝试了这两个选项:
testPathDirs = ['coredata/src'];
和
config.testPathDirs(['coredata/src']);
和运行:
$ jest --config=jest-config.js
...但我收到此类错误:
$ jest --config=jest-config.js
Using Jest CLI v0.4.0
Failed with unexpected error.
/Users/carles/dev/azazo/coredata/node_modules/jest-cli/src/jest.js:179
throw error;
^
SyntaxError: Unexpected token c
at Object.parse (native)
at /Users/carles/dev/azazo/coredata/node_modules/jest-cli/src/lib/utils.js:291:23
at _fulfilled (/Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:798:54)
at self.promiseDispatch.done (/Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:827:30)
at Promise.promise.promiseDispatch (/Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:760:13)
at /Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:574:44
at flush (/Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:108:17)
at process._tickCallback (node.js:419:13)
我发现配置文件是 JSON。
{
"testPathDirs": ["coredata/src"]
}
不幸的是,我在文档中找不到任何关于此的提示。
在我看来,您可以直接在 package.json
中配置 jest,请参阅 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 <shidhincr@gmail.com> (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"
}
}
}
文档已更新以解释配置。这里是 link 供任何人寻找更多信息:
https://facebook.github.io/jest/docs/en/configuration.html#content
要点:
如果使用 --config <path/to/json>
将 jest 定向到您的配置 json 文件,您只需将 JSON 信息放入文件中而无需 "jest" 关键字。
// config.json at <path/to/json>
{
"verbose": true
}
如果您想使用 package.json 配置 jest,请添加 "jest" 键,然后添加您的配置。
// package.json
{
"name": "packageName",
"version": "1.0.0",
"jest": {
"verbose": true
}
}
截至 2018 年 10 月 5 日的当前日期,我能够轻松设置 jest 配置文件,而不需要它采用 JSON 格式。
我的 package.json 脚本部分:
"scripts": {
"start": "node server.js",
"dev": "webpack-dev-server --hot --inline",
"test": "jest --config ./jest-config.js",
"build": "webpack",
"postinstall": "webpack"
}
我决定将 jest-config 文件保存在 package.json 旁边的根路径中,所以这是它指向的位置,但您可以将它放在任何您想要的位置。这是配置文件,虽然有点短:
module.exports = {
verbose: true,
setupTestFrameworkScriptFile: "./enzyme.js",
roots: [
"../__tests__"
],
modulePaths: [
"./__stubs__"
],
moduleNameMapper: {
".scss$": "scss-stub.js"
}
}
"Configuring Jest" 部分 (link here) 中的 Jest 文档说您可以使用 module.exports 对象创建它。它们包括一个警告,上面写着 "Please keep in mind that the resulting configuration must be JSON-serializable",这增加了混乱。 "Delightful Javascript Testing!"哈!
P.S. 配置中的根 属性 告诉 Jest 在哪里寻找所有测试。认为它可能有帮助。
对于 JEST V20+:
{
"roots": ["__tests__/"]
}
对于 v 20-,如果您使用 testPathDirs,您将收到以下警告:
弃用警告:
Option "testPathDirs" was replaced by "roots".
Jest now treats your current configuration as: {
"roots": ["tests/unit/"] }
Please update your configuration.
// package.json
{
...
scripts: {
"test": "jest --config ./jest.config.js"
}
...
}
我正在尝试将配置文件传递给 Jest,以便 运行 仅从给定目录进行测试。
根据文档,您可以使用 config.testPathDirs
: https://facebook.github.io/jest/docs/api.html#config-testpathdirs-array-string 并且可以调用 jest --config=<config-file>
.
遗憾的是,文档没有包含任何关于配置文件外观的描述。
我在 jest-config.js
文件中尝试了这两个选项:
testPathDirs = ['coredata/src'];
和
config.testPathDirs(['coredata/src']);
和运行:
$ jest --config=jest-config.js
...但我收到此类错误:
$ jest --config=jest-config.js
Using Jest CLI v0.4.0
Failed with unexpected error.
/Users/carles/dev/azazo/coredata/node_modules/jest-cli/src/jest.js:179
throw error;
^
SyntaxError: Unexpected token c
at Object.parse (native)
at /Users/carles/dev/azazo/coredata/node_modules/jest-cli/src/lib/utils.js:291:23
at _fulfilled (/Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:798:54)
at self.promiseDispatch.done (/Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:827:30)
at Promise.promise.promiseDispatch (/Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:760:13)
at /Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:574:44
at flush (/Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:108:17)
at process._tickCallback (node.js:419:13)
我发现配置文件是 JSON。
{
"testPathDirs": ["coredata/src"]
}
不幸的是,我在文档中找不到任何关于此的提示。
在我看来,您可以直接在 package.json
中配置 jest,请参阅 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 <shidhincr@gmail.com> (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"
}
}
}
文档已更新以解释配置。这里是 link 供任何人寻找更多信息:
https://facebook.github.io/jest/docs/en/configuration.html#content
要点:
如果使用 --config <path/to/json>
将 jest 定向到您的配置 json 文件,您只需将 JSON 信息放入文件中而无需 "jest" 关键字。
// config.json at <path/to/json>
{
"verbose": true
}
如果您想使用 package.json 配置 jest,请添加 "jest" 键,然后添加您的配置。
// package.json
{
"name": "packageName",
"version": "1.0.0",
"jest": {
"verbose": true
}
}
截至 2018 年 10 月 5 日的当前日期,我能够轻松设置 jest 配置文件,而不需要它采用 JSON 格式。
我的 package.json 脚本部分:
"scripts": {
"start": "node server.js",
"dev": "webpack-dev-server --hot --inline",
"test": "jest --config ./jest-config.js",
"build": "webpack",
"postinstall": "webpack"
}
我决定将 jest-config 文件保存在 package.json 旁边的根路径中,所以这是它指向的位置,但您可以将它放在任何您想要的位置。这是配置文件,虽然有点短:
module.exports = {
verbose: true,
setupTestFrameworkScriptFile: "./enzyme.js",
roots: [
"../__tests__"
],
modulePaths: [
"./__stubs__"
],
moduleNameMapper: {
".scss$": "scss-stub.js"
}
}
"Configuring Jest" 部分 (link here) 中的 Jest 文档说您可以使用 module.exports 对象创建它。它们包括一个警告,上面写着 "Please keep in mind that the resulting configuration must be JSON-serializable",这增加了混乱。 "Delightful Javascript Testing!"哈!
P.S. 配置中的根 属性 告诉 Jest 在哪里寻找所有测试。认为它可能有帮助。
对于 JEST V20+:
{
"roots": ["__tests__/"]
}
对于 v 20-,如果您使用 testPathDirs,您将收到以下警告:
弃用警告:
Option "testPathDirs" was replaced by "roots".
Jest now treats your current configuration as: { "roots": ["tests/unit/"] }
Please update your configuration.
// package.json
{
...
scripts: {
"test": "jest --config ./jest.config.js"
}
...
}