我有多个测试文件。每个文件都有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);
}
答案 0 :(得分:0)
我解决了这个问题。我没有为每个测试文件运行before
和after
,而是添加了文档中给出的ROOT-LEVEL HOOKS
ROOT-LEVEL HOOKS
您也可以选择任何文件并添加“root”级别挂钩。例如, 在所有describe()块之外添加beforeEach()。这将导致 回调到beforeEach()在任何测试用例之前运行,无论如何 它所居住的文件(这是因为Mocha有一个隐含的描述() 块,称为“根套件”)。