如何使用mocha运行一些初始化代码

gma*_*man 6 javascript mocha.js

我知道before,beforeEach,afterafterEach,但我怎么运行所有测试前,一些代码.

换句话说,我这样的文件

test
  test1.js
  test2.js
  test3.js
Run Code Online (Sandbox Code Playgroud)

我用它来运行测试

mocha --recursive
Run Code Online (Sandbox Code Playgroud)

我不想before在每个测试文件中放入一个.在执行任何测试之前,我需要一个beforeAllTests或一个--init=setup.js可以执行一些JavaScript的东西.在这种特殊情况下,我必须在测试运行之前配置我的系统的日志记录模块

有没有办法调用一些在所有测试之前执行的init函数?

小智 5

如果只需要初始化代码,那么mocha -r ./init对您来说可能就足够了。甚至将其放入test/mocha.opts

--require ./test/init
--ui tdd
Run Code Online (Sandbox Code Playgroud)

但如果你需要拆卸操作,就会遇到一个困境,例如:

var app = require('../app.js');
app.listen(process.env.WEB_PORT);

after(function(done) {
    var db = mongoskin.db(process.env.DB_URL, {safe:true});
    db.dropDatabase(function(err) {
        expect(err).to.not.be.ok();
        db.close(done);
    });
});
Run Code Online (Sandbox Code Playgroud)

你会得到错误:

ReferenceError: after is not defined

我猜摩卡在处理“--require”时尚未初始化。