我有多个测试文件。每个文件都有一个before
和after
函数,用于执行服务器启动,关闭和数据库清理活动。
样本测试文件的结构:
describe('some test:', function() {
before('reset db; start server', start_server)
after('close server', close_server)
// some tests
describe('#clear_expired_signals:', clear_expired_signals)
describe('#delete_signal ', delete_signal)
}
我收到EADDRINUSE
的时候,因为服务器在同一端口的每个过程中启动这些文件执行起来异常大部分的时间before
通话。
是否可以强制mochajs一次执行单个文件(文件顺序无关紧要)?
编辑:
功能样本前
function start_server(done) {
intialize_server.start().then(function(options) {
seneca = options.seneca;
seneca.client({
host: 'localhost',
port:options.port,
});
done();
}
}
function intialize_server(){
return new Promise(function (resolve, reject) {
seneca.ready(function () {
seneca.listen({
host: 'localhost',
port: custom_port,
});
resolve({
seneca: seneca,
port: custom_port
});
// console.log('test server listening')
});
});
}
后函数样本
function close_server(done) {
console.log('closing seneca instance');
seneca.close(done);
}
我解决了这个问题。而不是针对每个测试文件运行before
,而是按照文档中的说明进行添加after
ROOT-LEVEL HOOKS
根目录挂钩
您也可以选择任何文件并添加“根”级挂钩。例如,在所有describe()块之外添加beforeEach()。这将使对beforeEach()的回调在任何测试用例之前运行,无论其位于哪个文件中(这是因为Mocha具有隐式describe()块,称为“根套件”)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句