我了解before
,beforeEach
,after
和afterEach
,但如何在所有测试之前运行一些代码。
换句话说,我这样的文件
test
test1.js
test2.js
test3.js
我用
运行测试mocha --recursive
我不想在每个测试文件中放置before
。在执行任何测试之前,我需要一个beforeAllTests
或--init=setup.js
或者我可以执行一些JavaScript的东西。在这种特殊情况下,我必须在测试运行之前配置我的系统的日志记录模块
有没有办法调用一些在所有测试之前执行的init函数?
答案 0 :(得分:4)
如果只需要初始化代码,那么mocha -r ./init
可能就足够了。甚至把它放进test/mocha.opts
--require ./test/init
--ui tdd
但如果您需要拆卸行动,则存在两难问题,例如:
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);
});
});
你会收到错误:
ReferenceError: after is not defined
我猜mocha在处理'--require'时尚未初始化。
答案 1 :(得分:3)
我最近在我们的节点应用中找到了它:
test ├──unit │ ├── test1 │ ├── test2 │ └── ... ├──integeration │ ├── test1 │ ├── test2 │ └── ... ├── bootstrap.js └── mocha.opts
进行。
答案 2 :(得分:2)
这是官方摩卡解决方案:
Mocha tests with extra options or parameters
它允许您定义可以的代码:
1 - 在npm start和npm test之前执行
2 - 仅在npm测试之前执行