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 to share