web-dev-qa-db-fra.com

Comment puis-je obtenir la sortie XML JUnit de Jest?

J'ai une application React qui a des tests Jest. Je configure Jest dans mon package.json:

…
  "jest": {
    "setupEnvScriptFile": "./test/jestenv.js",
    "setupTestFrameworkScriptFile": "./test/setup-jasmine-env.js",
    "testRunner": "node_modules/jest-cli/src/testRunners/jasmine/jasmine2.js",
    "unmockedModulePathPatterns": [
      "./node_modules/q",
      "./node_modules/react"
    ]
  },
…

Le setup-jasmine-env.js ressemble à ça:

var jasmineReporters = require('jasmine-reporters');
jasmine.VERBOSE = true;
jasmine.getEnv().addReporter(
  new jasmineReporters.JUnitXmlReporter({
    consolidateAll: true,
    savePath: "output/",
    filePrefix: "test-results"
  })
);

Il a fallu un peu de travail pour obtenir cette configuration env jasmine correctement, mais je ne vois rien dans le répertoire output (en effet, il n'est pas créé et le créer moi-même n'aide pas). Je soupçonne que mes modifications au jasmine var ne sont pas les mêmes que celles que Jest utilise, mais je ne sais pas comment les relier ensemble.

18
Drew Stephens

on dirait que tout ce qui vous manque dans la configuration ci-dessus est d'ajouter jasmine-reporters à unmockedModulePathPatterns, essayez donc ce qui suit:

"jest": {

   ...

   "unmockedModulePathPatterns": [
     "./node_modules/q",
     "./node_modules/react",
     "./node_modules/jasmine-reporters"
   ]
},

J'espère que cela pourra aider!

MISE À JOUR: pour toute autre personne rencontrant ce problème, j'ai mis en place une démo de travail ici .

3
Joe Devine

Si vous utilisez une version plus récente de jest (je regarde 16.0.2), vous n'avez pas besoin de spécifier le testrunner car jasmine est la valeur par défaut. Vous n'avez pas non plus besoin de la section unmockedModulePathPatterns de la configuration jest.

C'est à dire. il vous suffit d'inclure les devDependencies suivants dans votre package.json:

"jasmine-reporters": "^2.2.0",
"jest": "^16.0.2",
"jest-cli": "^16.0.2"

Et ajoutez cette plaisanterie à votre package.json (remarque: vous n'avez plus besoin de la section unmockedModulePathPatterns):

"jest": {
  "setupTestFrameworkScriptFile": "./setup-jasmine-env.js"
}

Et puis utilisez le setup-jasmine-env.js de la question.

7
supamanda

Jest prend en charge ses propres reporters via la configuration testResultsProcessor. J'ai donc écrit une petite chose qui génère du junit xml compatible pour cela. Vous pouvez le trouver ici. https://github.com/palmerj3/jest-junit

6
Jason Palmer JSONP