Sails.js 删除整个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: {

我正在使用“sails内存”作为sails单元测试的数据库,理想情况下,我希望在单独测试后清除整个数据库。有什么方法可以删除整个数据库吗?

您可以在每次测试之前提起您的sails应用程序,重建数据库(
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提供了一个解决方案:。