Как получить JUnit XML-выход из Jest?
У меня есть приложение React, в котором есть тесты Jest. Я настраиваю Jest в своем 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"
]
},
…
setup-jasmine-env.js
выглядит следующим образом:
var jasmineReporters = require('jasmine-reporters');
jasmine.VERBOSE = true;
jasmine.getEnv().addReporter(
new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: "output/",
filePrefix: "test-results"
})
);
Потребовалось немного работы, чтобы правильно настроить эту настройку jasmine env, но я ничего не вижу в каталоге output
(действительно, она не создана и сама ее сама не помогает). Я подозреваю что мои изменения в var jasmine
не совпадают с тем, что использует Jest, но я не могу понять, как их связать.
Ответы
Ответ 1
похоже, что все, что вам не хватает в приведенной выше настройке, заключается в добавлении jasmine-reporters
в unmockedModulePathPatterns
, поэтому дайте следующее:
"jest": {
...
"unmockedModulePathPatterns": [
"./node_modules/q",
"./node_modules/react",
"./node_modules/jasmine-reporters"
]
},
Надеюсь, что это поможет!
ОБНОВЛЕНИЕ: для всех, кто испытывает эту проблему, я разместил рабочую демонстрацию здесь.
Ответ 2
Если вы используете более новую версию шутки (я смотрю 16.0.2), вам не нужно указывать testrunner
, потому что жасмин по умолчанию. Вам также не нужен раздел unmockedModulePathPatterns
конфигурации jest.
т.е. вам просто нужно включить следующие devDependencies
в package.json
:
"jasmine-reporters": "^2.2.0",
"jest": "^16.0.2",
"jest-cli": "^16.0.2"
И добавьте эту конфигурацию jest в свой package.json
(обратите внимание: вам больше не нужен раздел unmockedModulePathPatterns
):
"jest": {
"setupTestFrameworkScriptFile": "./setup-jasmine-env.js"
}
И затем используйте Drew setup-jasmine-env.js
из вопроса.
Ответ 3
Jest поддерживает своих собственных репортеров через конфигурацию testResultsProcessor. Поэтому я написал небольшую вещь, которая генерирует совместимый junit xml для этого. Вы можете найти это здесь. https://github.com/palmerj3/jest-junit