J'essaie de transmettre un fichier de configuration à Jest afin d'exécuter des tests uniquement à partir d'un répertoire donné.
Selon la documentation, vous pouvez utiliser config.testPathDirs
: https://facebook.github.io/jest/docs/api.html#config-testpathdirs-array-string et vous pouvez appeler jest --config=<config-file>
.
Malheureusement, la documentation ne comprend aucune description de l'apparence du fichier de configuration.
J'ai essayé ces deux options dans un jest-config.js
fichier:
testPathDirs = ['coredata/src'];
et
config.testPathDirs(['coredata/src']);
et a couru:
$ jest --config=jest-config.js
... mais je reçois ce type d'erreur:
$ 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)
J'ai compris que le fichier de configuration est JSON.
{
"testPathDirs": ["coredata/src"]
}
Malheureusement, je n'ai trouvé nulle part dans la documentation un indice à ce sujet.
Il me semble que vous pouvez configurer jest directement dans votre package.json
, voir 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"
}
}
}
Les documents ont été mis à jour pour expliquer la configuration. Voici le lien pour tous ceux qui recherchent plus d'informations:
https://facebook.github.io/jest/docs/en/configuration.html#content
L'essentiel:
Si vous utilisez le --config <path/to/json>
pour diriger jest vers votre fichier de configuration json, vous ne mettez que les informations JSON dans le fichier sans le mot clé "jest".
// config.json at <path/to/json>
{
"verbose": true
}
Si vous souhaitez utiliser le package.json pour configurer jest, ajoutez la clé "jest" puis votre configuration.
// package.json
{
"name": "packageName",
"version": "1.0.0",
"jest": {
"verbose": true
}
}
À partir de la date actuelle du 5 octobre 2018, j'ai pu installer un fichier de configuration Jest avec facilité, sans qu'il soit nécessaire qu'il soit au format JSON.
Ma section scripts package.json:
"scripts": {
"start": "node server.js",
"dev": "webpack-dev-server --hot --inline",
"test": "jest --config ./jest-config.js",
"build": "webpack",
"postinstall": "webpack"
}
J'ai décidé de conserver le fichier jest-config dans le chemin racine à côté de package.json, c'est donc là qu'il pointe, mais vous pouvez le placer où vous le souhaitez. Voici le fichier de configuration, quoique un peu court:
module.exports = {
verbose: true,
setupTestFrameworkScriptFile: "./enzyme.js",
roots: [
"../__tests__"
],
modulePaths: [
"./__stubs__"
],
moduleNameMapper: {
".scss$": "scss-stub.js"
}
}
La documentation Jest dans la section "Configurer Jest" ( lien ici ) dit que vous pouvez le créer avec un objet module.exports. Ils incluent une mise en garde qui dit: "Veuillez garder à l'esprit que la configuration résultante doit être sérialisable JSON", ce qui ajoute à la confusion. "Test Javascript délicieux!" Hah!
P.S. La propriété roots dans la configuration indique à Jest où chercher tous vos tests. J'ai pensé que cela pourrait aider.
Pour JEST V20 +:
{
"roots": ["__tests__/"]
}
Pour la version 20-, vous obtiendrez l'avertissement suivant si vous utilisez testPathDirs:
Avertissement de dépréciation:
L'option "testPathDirs" a été remplacée par "racines".
Jest traite maintenant votre configuration actuelle comme: {"roots": ["tests/unit /"]}
Veuillez mettre à jour votre configuration.