31

これが可能かどうか誰かが何か考えを持っていますか?node-inspectorのサンプルのほとんどは、呼び出されたWebページのデバッグを対象としているように見えました。ただし、ジャスミンノードテストをデバッグできるようにしたいと思います。

4

3 に答える 3

32

つまり、jasmine-nodeをデバッグするだけです。

node --debug-brk node_modules/jasmine-node/lib/jasmine-node/cli.js spec/my_spec.js

スクリプトのソースを見るとjasmine-node、それが呼び出されるだけcli.jsで、そのスクリプトを問題なくデバッグできることがわかりました。

node-inspectorを使用してCoffeeScriptテストをデバッグしたかったのです。スイッチを追加するだけ--coffeeでうまくいきました。

node --debug-brk node_modules/jasmine-node/lib/jasmine-node/cli.js --coffee spec/my_spec.coffee
于 2013-02-26T15:44:57.480 に答える
9

私はtoggleと呼ばれる小さなutilを書くことになりました:

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 --debugmyfile.jsdebug。デバッグを実行すると、トグルはctrl-c以外になるまで待機します。Ctrl-cを終了します。再実行することもできます。これは素晴らしいことです。

w0000t。

于 2011-10-05T04:26:12.083 に答える
4

私の知識のない推測では、ジャスミンにパッチを適用する必要があります。テストの実行時に新しいノードプロセスなどが生成され、これらの新しいプロセスはデバッグ対応である必要があります。

私も同様の欲求を持っていて、Eclipseをデバッガーとして使用してexpresssoを動作させることができました:http: //groups.google.com/group/nodejs/browse_thread/thread/af35b025eb801f43

…しかし、私は気づきました。コードを理解するためにコードをステップスルーする必要がある場合は、おそらくコードをリファクタリングするか(おそらくよりテストしやすくするため)、テストをより小さな単位に分割する必要があります。

テストはデバッガーです。

于 2011-07-26T12:38:33.133 に答える