Sails.js 删除整个sails内存数据库?
我正在使用“sails内存”作为sails单元测试的数据库,理想情况下,我希望在单独测试后清除整个数据库。有什么方法可以删除整个数据库吗?您可以在每次测试之前提起您的sails应用程序,重建数据库(Sails.js 删除整个sails内存数据库?,sails.js,waterline,Sails.js,Waterline,我正在使用“sails内存”作为sails单元测试的数据库,理想情况下,我希望在单独测试后清除整个数据库。有什么方法可以删除整个数据库吗?您可以在每次测试之前提起您的sails应用程序,重建数据库(migrate:'drop')。以下是一个例子: Sails = require('sails/lib/app'); app = Sails(); var testConfig = { environment: 'test', port: 1337, log: {
migrate:'drop'
)。以下是一个例子:
Sails = require('sails/lib/app');
app = Sails();
var testConfig = {
environment: 'test',
port: 1337,
log: {
level: 'error'
},
connections: {
testDB: {
adapter: 'sails-memory'
}
},
connection: 'testDB',
//wipe/drop ALL my data and rebuild models every time
migrate: 'drop'
};
beforeEach(function (done) {
// start sails app for tests
app.lift(testConfig, function (err, sails) {
done(err);
});
});
//tests...
我找到了另一种似乎有效的方法。这会发出一个事件,通知orm钩子在每次测试之前重新加载。如果使用内存数据库或带有“drop”迁移选项的磁盘数据库,则可以实现所需的功能
beforeEach((done) => {
"use strict";
// Drops database between each test. This works because we use
// the memory database
sails.once('hook:orm:reloaded', done);
sails.emit('hook:orm:reload');
});
无需
迁移:删除;内存适配器每次都会重新启动!我一直在想,电梯的运行有多贵?目前,我只有几个测试,但随着测试数量的增加,我想知道开销是否会导致运行缓慢的测试套件。你有什么经验?谢谢只有在集成测试中,我才在每次测试之前提升服务器。另外,我还有一些单元测试,我用它们来模拟数据库访问。在我的单元测试中,我在所有测试之前提升服务器,只是为了初始化模型、服务等。下面是数字:136个集成测试=>~8秒;201单元测试=>~3秒需要注意的是-我不知道这是最近的更改,还是一种特性-但是在我的配置中,我必须将连接
和迁移
键放置在配置中的模型
对象中,使其工作,如下所示:testConfig={models:{connection:'testDB',migrate:'drop'},…}
。如果上述方法不起作用,请尝试此方法。我认为这也适用于其他数据库。适用于mongodb。这篇文章对我很有用,它为内存中的情况和实际的SQL DB提供了一个解决方案:。