难以测试异步功能

时间:2014-09-09 14:10:19

标签: node.js mocha

我正在尝试学习Mocha并且在处理异步代码时遇到问题。

我想创建一个测试数据库,用一些数据填充它,然后编写一些测试。我的问题是我无法弄清楚如何在运行其他测试之前创建和填充我的测试数据库。这是我的代码的基本结构:

describe('Database', function() {

  // create the DB and populate it with some test data
  iniDB(dbName, function(db) {
    addDataToDB(db, table, data);
  });


  // tests below here

});

通过阅读文档,似乎我需要使用before来确保我的异步代码在我的测试之前运行。为了尝试这个,我尝试使用这样的东西:

describe('Database', function() {

  before(function(done) {
    iniDB(dbName, function(db) {
      addDataToDB(db, table, data);
    });
    done();
  });

  // tests below here

});

如何在运行后续测试之前告诉Mocha首先创建和填充我的数据库?

1 个答案:

答案 0 :(得分:1)

使用before()是正确的解决方案,只需在所有数据写完后调用done()。像这样:

before(function(done) {
  iniDB(dbName, function(db) {
    addDataToDB(db, table, data, function() {
      done();
    });
  });
});