【问题标题】:Adding a default before() function for all the test cases (Mocha)为所有测试用例添加默认的 before() 函数(Mocha)
【发布时间】:2014-08-08 09:09:46
【问题描述】:

我正在使用 TDD(Mocha) 为我的 node.js 服务器编写函数。为了连接到我正在做的数据库

before(function(done){
  db.connect(function(){
      done();
   });
});

我正在使用 make test 运行测试用例,并已将我的 makefile 配置为使用 mocha *.js 运行该特定文件夹中的所有 js 文件

但是对于每个js 文件,我必须与数据库建立单独的连接,否则我的测试用例会失败,因为它们与其他测试文件不共享公共范围。

所以问题是,有没有像beforeAll() 这样的东西,只需连接一次数据库,然后运行所有测试用例?任何帮助/建议表示赞赏。

【问题讨论】:

    标签: node.js tdd mocha.js


    【解决方案1】:

    您可以将您的数据库连接设置为每个 Mocha 测试模块导入的模块。

    var db = require('./db');
    

    一个好的数据库接口会在它完成连接之前对你发送给它的命令进行排队。您可以在这里发挥自己的优势。

    在您的before 呼叫中,只需执行相当于no op 的操作。在 SQL 中,这很简单,例如 SELECT 1 的原始查询。你不在乎结果。查询的返回仅表示数据库已准备就绪。

    由于每个 Mocha 模块使用相同的数据库模块,所以它只会连接一次。

    在每个测试模块中使用它:

    before(function(done) {
      db.no_op(done);
    });
    

    然后将db.no_op定义为执行no op并接受回调函数的函数。

    【讨论】:

    • 我之前也有同样的想法,但只是在想更多的“mocha”方式来做这件事,比如我可以配置的 mocha 特定功能或类似的东西。但无论如何,你的解决方案是有效的。感谢您的及时回复并 +1。
    猜你喜欢
    • 2019-04-08
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多