Отладка тестов жасмин-узла с помощью инспектора узла - PullRequest
31 голосов
/ 28 мая 2011

У кого-нибудь есть идеи, возможно ли это?Большая часть образца для инспектора узла, казалось, была направлена ​​на отладку вызываемой веб-страницы.Я хотел бы иметь возможность отлаживать тесты с жасминовыми узлами.

Ответы [ 3 ]

32 голосов
/ 26 февраля 2013

Короче, просто отладка jasmine-узла:

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
9 голосов
/ 05 октября 2011

В итоге я написал небольшую утилиту под названием 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.

4 голосов
/ 26 июля 2011

Мое необразованное предположение состоит в том, что вам нужно будет исправить жасмин, я полагаю, что он запускает новый процесс узла или что-то еще при выполнении тестов, и эти новые процессы должны быть с поддержкой отладки.

У меня было похожее желание, и мне удалось заставить Expressso работать с использованием Eclipse в качестве отладчика: http://groups.google.com/group/nodejs/browse_thread/thread/af35b025eb801f43

… но я понял: если мне нужно пройтись по своему коду, чтобы понять его, мне, вероятно, нужно реорганизовать код (возможно, чтобы сделать его более тестируемым) или разбить мои тесты на более мелкие блоки.

Ваши тесты - это ваш отладчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...