在运行测试套件之前清理数据库的最佳方法是什么(是否有 npm 库或推荐的方法)。
我知道 before() 函数。
我正在使用 node/express、mocha 和 sequelize。
在运行测试套件之前清理数据库的最佳方法是什么(是否有 npm 库或推荐的方法)。
我知道 before() 函数。
我正在使用 node/express、mocha 和 sequelize。
该before
功能与清理数据库一样好。如果您只需要清理一次数据库,即在运行所有测试之前,您可以before
在单独的文件中拥有一个全局函数
before(function(done) {
// remove database data here
done()
})
require('./globalBefore)
// actual test 1 here
require('./globalBefore)
// actual test 2 here
请注意, globalBefore 只会运行一次,即使它已被要求两次
尝试限制在测试中使用外部依赖项,例如数据库。外部依赖越少,测试就越容易。您希望能够并行运行所有单元测试,而数据库等共享资源使这变得困难。
看看这个关于编写可测试 javascript http://www.youtube.com/watch?v=JjqKQ8ezwKQ的 Google 技术讲座
还要看看重新布线模块。它非常适合存根函数。
我通常这样做(比如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()
描述)。
我制作了这个库来为您的测试清理和导入固定装置。
这样,您可以导入夹具、测试然后清理您的数据库。
看看以下内容:
before(function (done) {
prepare.start(['people'], function () {
done();
});
});
after(function () {
prepare.end();
});