运行测试之前清理出的测试数据库(Cleaning out test database before

2019-09-01 15:01发布

什么是运行测试套件之前清理数据库的最佳方式(有没有NPM库或这样的推荐方法)。

我知道的前()函数。

我使用节点/快递,摩卡和sequelize。

Answer 1:

before的功能是一样好,你会为清理你的数据库做。 如果你只需要清理一次数据库,即运行所有测试前,你可以有一个全球before功能在一个单独的文件

globalBefore.js

before(function(done) {
   // remove database data here
   done()
}) 

单测试1.js

require('./globalBefore)
// actual test 1 here

单测试2.js

require('./globalBefore)
// actual test 2 here

需要注意的是globalBefore将只运行一次,即使它已经两次要求

测试原理

尽量限制使用外部依赖条件,比如在你的测试数据库。 越少的外部依赖的测试更容易。 你要能够并行运行和共享资源,如数据库,使这个困难的所有单元测试。

看看这个谷歌科技说说编写可测试的JavaScript http://www.youtube.com/watch?v=JjqKQ8ezwKQ

还需要看看ReWire的模块。 它工作得很好删空函数。



Answer 2:

我通常不喜欢这样(说一个User模式):

describe('User', function() {
  before(function(done) {
    User.sync({ force : true }) // drops table and re-creates it
      .success(function() {
        done(null);
      })
      .error(function(error) {
        done(error);
      });
  });

  describe('#create', function() {
    ...
  });
});

还有sequelize.sync({force: true})这将删除并重新创建所有表( .sync()描述在这里 )。



Answer 3:

我做了这个LIB清洁和进口灯具进行测试。

这样,您就可以导入夹具,测试,然后清理数据库。

看看下面的例子:

before(function (done) {
   prepare.start(['people'], function () {
      done();
   });
});

after(function () {
   prepare.end();
});

https://github.com/diogolmenezes/test_prepare



文章来源: Cleaning out test database before running tests