我正在尝试以编程方式运行mocha。 跑步者的代码如下:
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(){ });
测试非常简单:
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);
});
});
mocha在第一次失败之前运行测试,然后退出并忽略其他测试。
输出结果为:
[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)
有没有办法强迫Mocha运行所有测试?
答案 0 :(得分:8)
在挖掘了Mocha的源代码后,我发现以下工作(在我们的情况下)。我们将参数'bail'附加到我们的mocha套件设置
的test.html
<script src="mocha.js"></script>
<script>
mocha.ui('bdd');
mocha.bail(false);//<-- this line is the magic
mocha.reporter('html');
</script>
通过附加bail参数,它不会在第一次失败后停止执行。默认情况下,此参数似乎为false(从命令行运行时),但在通过phantomjs执行测试时为true。 (我们使用了Mocha v1.8.1)