Как я могу подписаться на события в mocha suite?

Я хотел бы продлить результаты теста мокко и прослушать их с доступного объекта мокко. Во-первых, я смотрю на получение результатов "проходов".

Похоже, что они могут быть подписаны из набора, но я не уверен, как...

Я пробовал следующее, которое, как я думал, будет слушать до конца всех моих тестов:

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);

Ответ 1

Я сделал еще немного копания в 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
     */ 

намного лучше!

Ответ 2

Вы также можете получить похожие события в

mocha.suite.beforeEach(function() {} )
mocha.suite.afterEach(function() {} )
mocha.suite.afterAll( function() {} )