Похоже, проблема в том, что jest
использует harmonize
, который порождает дочерний процесс, чтобы убедиться, что используется опция --harmony
.
гармонизировать/harmonize.js, строки 30-35
var node = child_process.spawn(process.argv[0], ['--harmony'].concat(process.argv.slice(1)), {});
node.stdout.pipe(process.stdout);
node.stderr.pipe(process.stderr);
node.on("close", function(code) {
process.exit(code);
});
Мне удалось успешно отлаживать шуточные тесты (хотя тесты, использующие преобразования JSX, невероятно медленны), закомментировав код эта шутка используется для создания согласованного процесса.
node_modules/jest-cli/bin/jest.js, последние строки файла:
if (require.main === module) {
//harmonize(); <--- comment out
_main(function (success) {
process.exit(success ? 0 : 1);
});
}
Затем вы можете запустить:
$ node-debug --nodejs --harmony ./node_modules/jest-cli/bin/jest.js --runInBand
Jest полагается на наличие флага --harmony
, поэтому нам нужно добавить его обратно с --nodejs --harmony
. Мы также добавляем --runInBand
, чтобы тесты выполнялись последовательно, а не параллельно.
Это открывает веб-отладчик, и вы можете отлаживать тесты, хотя получение нужного теста может быть довольно медленным. Пожалуйста, прокомментируйте, если кто-нибудь знает способ сделать это быстрее, и я обновлю свой ответ.
Вы можете добавить это к своему package.json
, чтобы было легче начинать:
...
scripts: {
"test": "jest",
"test-debug": "node-debug --nodejs --harmony ./node_modules/jest-cli/bin/jest.js --runInBand"
}
...
Конечно, основной задачей этого решения является редактирование исходного кода jest
. Буду думать, как сделать пулл-реквест, чтобы сделать эту флешку.
Выпуск Github создан здесь: https://github.com/facebook/jest/issues/152< /а>
person
Sean Adkinson
schedule
16.10.2014