4

I am trying to run mocha programmatically. The code of runner is the following:

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

The mocha runs tests before the first failure and then exits and ignore other tests.

The output is:

  [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 way to force Mocha run all tests?

4

1 回答 1

8

在挖掘 Mocha 的源代码后,我发现以下工作(在我们的情况下)。我们将参数“保释”附加到我们的摩卡套件设置中

测试.html

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

通过附加保释参数,它不会在第一次失败后停止执行。默认情况下,此参数似乎为 false(从命令行运行时),但在通过 phantomjs 执行测试时为 true。(我们使用了 Mocha v1.8.1)

于 2013-02-18T14:45:41.993 回答