17

mocha テストの結果を拡張して、利用可能な mocha オブジェクトから聞くことができるようにしたいと考えています。まず、「合格」の結果を取得することを検討しています。

スイートからサブスクライブされている可能性があるようですが、方法がわかりません...

すべてのテストの最後をリッスンすると思われる次のことを試しました。

var suite = mocha.suite.suites[0];
suite.on("end", function(e){ console.log(e, "mocha - heard the end of my test suite"); } );

機能するがまったくエレガントではない私の単純なハック-本当に悲しい:

setTimeout(function(){ 
        var passes = $(".passes").find("em").text();
        console.log("ui - heard the end of my test suite - passes: " + passes); 
    }, 500);
4

2 に答える 2

43

mocha.js をさらに掘り下げたところ、mocha.run() が、探していたすべてのイベントを発行するランナーを実際に返すことがわかりました。

私が使用していた元の例には、mocha.run() しかありませんでした。

したがって、Mocha.run() がランナーを返す場合、それをサブスクライブできることに気付きました。

 var runner = mocha.run();
 var testsPassed = 0;

 var onTestPassedHandler = function(e){
      testsPassed++;
      console.log("onTestPassedHandler - title: " + e.title + " - total:" + testsPassed);

    };

 runner.on("pass", onTestPassedHandler);


    /**
     *  These are all the events you can subscribe to:
     *   - `start`  execution started
     *   - `end`  execution complete
     *   - `suite`  (suite) test suite execution started
     *   - `suite end`  (suite) all tests (and sub-suites) have finished
     *   - `test`  (test) test execution started
     *   - `test end`  (test) test completed
     *   - `hook`  (hook) hook execution started
     *   - `hook end`  (hook) hook complete
     *   - `pass`  (test) test passed
     *   - `fail`  (test, err) test failed
     */ 

ずっといい!

于 2013-09-09T16:20:37.043 に答える
5

で同様のイベントを取得することもできます。

mocha.suite.beforeEach(function() {} )
mocha.suite.afterEach(function() {} )
mocha.suite.afterAll( function() {} )
于 2014-12-05T02:11:48.040 に答える