1

win 7でwebstormテストランナーでmochaを使用しようとしています.

私はこれらの設定パラメータを持っています:

  • ノードへのパス:

    C:\Program Files (x86)\nodejs\node.exe
    

    作業ディレクトリ:

    D:\creation\software developer\projects\dev\document root\
    

    ノード アプリ js ファイルへのパス:

    C:\Users\inf3rno\node_modules\mocha\bin\_mocha
    

    アプリケーション パラメータ:

    test
    

Webstorm コンソールに次のエラー メッセージが表示されました

✖ 1 of 1 test failed:

しかし、どのテストが失敗したかについては何もありません。:S

修正方法は?

(git bashで詳細なエラーメッセージが出たので、mochaはうまくインストールされています)

さまざまなレポーターで試しましたが、どれも機能していないようです。問題は、私が考える Error オブジェクトにあります。それ以外は問題なく表示されます。

カスタム レポーターを作成したところ、スタックが Webstorm コンソールに表示されるかどうかは完全にランダムであることがわかりました。最良の選択は、process.stderr.write で出力することでした。console.log または process.stdout.write は何も表示されません。なぜだかわかりません。ある種のタイムアウトかもしれませんが、タイムアウトを 9999999 に設定しました。

このレポーターでテスト:

exports = module.exports = WebStorm;

/**
 * Initialize a new `WebStorm` test reporter.
 *
 * @param {Runner} runner
 * @api public
 */

 //decribe -> suite
 //it -> test

function WebStorm(runner) {
  var buffer = [];
  var suites = [];
  var fails = [];

  runner.on("suite", function(suite){
     suites.push(suite.title || "''");
  });

  runner.on("suite end", function(suite){
     if (fails.length > 0)
         buffer.push("describe "+suites.join(".")+"\n"+fails.join("\n"));
     fails = [];
     suites.pop();
  });

  runner.on("fail", function(test, err){
      fails.push("  it fail "+test.fullTitle() + err.message);
  });

  runner.on("end", function (){
      process.stderr.write(buffer.length+"\n");
      //process.stderr.write(buffer.join("\n"));
  });
}

出力テキストの長さは実際には問題ではなく、表示するまでにどれだけ待たなければならないかだけであることがわかりました。したがって、標準出力のバグではなく、タイムアウトの問題だと思います。Webstorm コンソールは、「予期しないネットワーク エラーが発生した」ことを意味する「プロセスは終了コード 59 で終了しました」を返します。

jasmine-node に変更しました。動作しています。

編集:

jasmine2 に変更しましたが、Windows でも同じ問題がありました。process.exit最も簡単な回避策は、たとえば 1msで延期することです。そのため、終了前に終了することはできませんstdout.write。(手動で stdout をフラッシュし、その後のみ exit を呼び出すことも、おそらく有効な解決策です。)

4

3 に答える 3

5

大国がこれを修正する方法と理由について議論している間、より弱い人間はこの回避策に頼ることができます:

  • testRunner.js (または何でも) というファイルを作成します。
  • 次のコード行を追加します
  • プロジェクトごとにテスト ファイルのリストを変更する
  • webstorm で、testRunner.jsを実行してテストを実行します

testRunner.js

var testFiles=["test/_helper.js","test/tests.js","test/tests.coffee"];

var Mocha = require('mocha');

var mocha = new Mocha;

mocha.reporter('spec').ui('bdd');

for (var i =0;i<testFiles.length;i++){
 mocha.addFile(testFiles[i]);
}

var runner = mocha.run(function(){
                console.log('finished');

});

礼儀: http://wuntusk.blogspot.com/2012/06/using-webstorm-or-phpstorm-and-mocha.html

于 2013-09-25T15:50:13.230 に答える
3

これは、既知の Windows 固有のノードの問題が原因であり、JetBrains issue trackerにも記録されています。

于 2012-10-31T15:38:56.853 に答える