Mocha exists after the first test failure when used programmatically

I am trying to run mocha programmatically. The runner code is as follows:

var Mocha = require("mocha");
var mocha = new Mocha();
mocha.reporter('list').ui('bdd').ignoreLeaks();
//Here the serv_paths variable is defined, -- this code snippet is skipped
// ...
serv_paths.forEach(function(file){
mocha.addFile(file);
});
var runner = mocha.run(function(){ });

      

The tests are very simple:

 var assert = require("assert");
    describe('True!', function(){
        it('true = true', function(){
        assert.equal(true, true);
        });
        it('true = false', function(){
            assert.equal(true, false);
        });
        it('true = false -- second', function(){
            assert.equal(true, false);
    });
        it('true = true', function(){
            assert.equal(true, true);
        });
    });

      

Mokka runs tests before the first failure and then exits and ignores other tests.

Output:

  [Jan 21 04:57:23]   ✓ True! true = true: 0ms
    [Jan 21 04:57:23]   1) True! true = false
    [Jan 21 04:57:23]   ✖ 1 of 4 tests failed:
    [Jan 21 04:57:23]   1) True! true = false:
     AssertionError: true == false
          at Context.<anonymous> (/home/ubuntu/project/plugins-server/cloud9.ide.help/test_test.js:14:10)
          at Test.run (/home/ubuntu/project/node_modules/mocha/lib/runnable.js:213:32)
          at Runner.runTest (/home/ubuntu/project/node_modules/mocha/lib/runner.js:343:10)
          at /home/ubuntu/project/node_modules/mocha/lib/runner.js:389:12
          at next (/home/ubuntu/project/node_modules/mocha/lib/runner.js:269:14)
          at /home/ubuntu/project/node_modules/mocha/lib/runner.js:278:7
          at next (/home/ubuntu/project/node_modules/mocha/lib/runner.js:226:23)
          at Array.<anonymous> (/home/ubuntu/project/node_modules/mocha/lib/runner.js:246:5)
          at EventEmitter._tickCallback (node.js:190:38)

      

Is there a way to get Mocha to run all tests?

+3


source to share


1 answer


After digging into the Mocha source code, I found that the following works (in our situation). We have added a "collateral" parameter to our mocha package setup

test.html



<script src="mocha.js"></script>
<script>
  mocha.ui('bdd');
  mocha.bail(false);//<-- this line is the magic
  mocha.reporter('html');
</script>

      

By adding a subplot parameter, it does not terminate after the first failure. By default this parameter seems to be false (when run from the command line), but true when running tests through phantomjs. (We used Mocha v1.8.1)

+8


source







All Articles