删除整个sails-memory数据库?

Hol*_*osa 10 sails.js waterline

我使用'sails-memory'作为我的Sails单元测试的数据库,理想情况下希望在单独测试后清除整个数据库.有没有办法可以删除整个数据库?

Rus*_*gan 7

我找到了另一种似乎有用的方法.这会发出一个事件,告诉orm挂钩在每次测试之前重新加载.如果使用内存db或带有'drop' migrate选项的磁盘db,它将完成所需的操作.

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');
});
Run Code Online (Sandbox Code Playgroud)


Vic*_*tor 3

您可以在每次测试之前提升 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...
Run Code Online (Sandbox Code Playgroud)

  • 无需`migrate: drop`;内存适配器每次都会重新启动! (2认同)
  • 值得注意的是 - 我不知道这是最近的更改还是一个特性 - 但在我的配置中,我必须将“connection”和“migrate”键放置在配置中的“models”对象中才能实现工作,如下所示:`testConfig = { models: { connection: 'testDB', migrate: 'drop' }, ... }`。如果上述方法不起作用,请尝试此操作。 (2认同)