按顺序运行测试文件?

时间:2016-08-05 03:53:05

标签: javascript node.js mocha

我有多个测试文件。每个文件都有beforeafter个函数,用于执行服务器启动,关闭和数据库清理活动。

样本测试文件的结构:

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

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。我没有为每个测试文件运行beforeafter,而是添加了文档中给出的ROOT-LEVEL HOOKS

  

ROOT-LEVEL HOOKS

     

您也可以选择任何文件并添加“root”级别挂钩。例如,   在所有describe()块之外添加beforeEach()。这将导致   回调到beforeEach()在任何测试用例之前运行,无论如何   它所居住的文件(这是因为Mocha有一个隐含的描述()   块,称为“根套件”)。