Кто-нибудь знает, возможно ли это? Похоже, что большая часть примера для инспектора узлов предназначена для отладки вызванной веб-страницы. Однако я хотел бы иметь возможность отлаживать тесты jasmine-node.
Отладка тестов жасминового узла с помощью инспектора узлов
Ответы (3)
Короче говоря, просто отлаживайте jasmine-node:
node --debug-brk node_modules/jasmine-node/lib/jasmine-node/cli.js spec/my_spec.js
Если вы посмотрите на исходный код сценария jasmine-node
, он просто вызывает cli.js
, и я обнаружил, что могу отлично отлаживать этот сценарий.
Я хотел использовать инспектор узлов для отладки теста CoffeeScript. Просто добавление переключателя --coffee
работало хорошо, например.
node --debug-brk node_modules/jasmine-node/lib/jasmine-node/cli.js --coffee spec/my_spec.coffee
node-debug /usr/local/lib/node_modules/jasmine-node/lib/jasmine-node/cli.js spec/
- person rob_james; 23.04.2015
node --inspect --debug-brk -i ./node_modules/jasmine-node/lib/jasmine-node/cli.js test-jasmine/
, поскольку @xorcus упомянул, что вы не можете использовать --autotest.
- person Jerinaw; 20.07.2017
В итоге я написал небольшую утилиту под названием toggle:
require('tty').setRawMode(true);
var stdin = process.openStdin();
exports.toggle = function(fireThis)
{
if (process.argv.indexOf("debug")!=-1)
{
console.log("debug flag found, press any key to start or rerun. Press 'ctrl-c' to cancel out!");
stdin.on('keypress', function (chunk, key) {
if (key.name == 'c' && key.ctrl == true)
{
process.exit();
}
fireThis();
});
}
else
{
console.log("Running, press any key to rerun or ctrl-c to exit.");
fireThis();
stdin.on('keypress', function (chunk, key) {
if (key.name == 'c' && key.ctrl == true)
{
process.exit();
}
fireThis();
});
}
}
Вы можете добавить его в свои модульные тесты, например:
var toggle = require('./toggle');
toggle.toggle(function(){
var vows = require('vows'),
assert = require('assert');
vows.describe('Redis Mass Data Storage').addBatch({
....
А затем запустите свои тесты, например: node --debug myfile.js debug. Если вы запустите переключатель отладки, он будет ждать, пока вы не нажмете что-нибудь, кроме Ctrl-C. Ctrl-c выходит. Вы также можете перезапустить, что приятно.
w0000t.
Мое необоснованное предположение заключается в том, что вам нужно будет исправить жасмин, я полагаю, что он порождает новый процесс узла или что-то в этом роде при запуске тестов, и эти новые процессы должны быть включены для отладки.
У меня было похожее желание, и мне удалось заставить работать экспресс, используя Eclipse в качестве отладчика: http://groups.google.com/group/nodejs/browse_thread/thread/af35b025eb801f43
…но я понял: если мне нужно пройтись по коду, чтобы понять его, мне, вероятно, потребуется рефакторинг кода (вероятно, чтобы сделать его более тестируемым) или разбить тесты на более мелкие блоки.
Ваши тесты — это ваш отладчик.