Mocha тесты, очистка дисковой базы перед каждым запуском файла - PullRequest
0 голосов
/ 05 декабря 2018

Я использую Sails 1.x.

Возможно ли сбросить базу данных Sails.js перед запуском каждого тестового файла?Я хочу, чтобы он был в состоянии после завершения sails.lift() перед каждым запуском.Я следовал за документами здесь - https://sailsjs.com/documentation/concepts/testing - но не нашел никакого решения, подобного этому.

Единственное решение, которое у меня есть сейчас, это изменить lifecyle.test.js before иafter для запуска beforeEvery и afterEvery - https://sailsjs.com/documentation/concepts/testing - так что каждый раз перед тестом он поднимается.Но на подъем уходит много времени.

1 Ответ

0 голосов
/ 08 декабря 2018

Это очень просто сделать.Вам просто нужно указать, чтобы добавить тестовое соединение в ваши подключения к источникам данных (зависит от версии Sails.js), настроить его как активное во время теста и предоставить стратегию миграции 'drop', которая просто перестраивает вашу БД каждый раз при запуске

models: {
    connection: 'test',
    migrate: 'drop'
},

Мои соединения Sails.js 0.12.14

module.exports.connections = {
  prod: {
    adapter: 'sails-mongo',
    host: 'localhost',
    port: 27017,
    database: 'some-db'
  },

  test: {
    adapter: 'sails-memory'
  },
};

Мой упрощенный lifecycle.test.js

let app;
// Before running any tests...
before(function(done) {
    // Lift Sails and start the server
    const Sails = require('sails').constructor;

    const sailsApp = new Sails();
    sailsApp.lift({
        models: {
            connection: 'test',
            migrate: 'drop'
        },
    }, function(err, sails) {
        app = sails;
        return done(err, sails);
    });
});

// After all tests have finished...
after(async function() {
    // here you can clear fixtures, etc.
    // (e.g. you might want to destroy the records you created above)

    try {
        await app.lower()
    } catch (err) {
        await app.lower()
    }
});

В Sails 1 это еще проще

const sails = require('sails');

before((done) => {
  sails.lift({
    datastores: {
      default: {
        adapter: 'sails-memory'
      },
    },
    hooks: { grunt: false },
    models: {
      migrate: 'drop'
    },
  }, (err) => {
    if (err) { return done(err); }

    return done();
  });
});

after(async () => {

  await sails.lower();

});
...