Подтвердить что ты не робот

Очистка тестовой базы данных перед запуском тестов

Каков наилучший способ очистки базы данных перед запуском набора тестов (есть ли библиотека npm или рекомендуемый метод для этого).

Я знаю о функции before().

Я использую node/express, mocha и sequelize.

4b9b3361

Ответ 1

Функция before примерно такая же, как и для очистки базы данных. Если вам нужно только очистить базу данных, как только вы запустите все свои тесты, вы можете иметь глобальную функцию before в отдельном файле

globalBefore.js

before(function(done) {
   // remove database data here
   done()
}) 

Стабилизаторы тест-1.js

require('./globalBefore)
// actual test 1 here

Стабилизаторы тест-2.js

require('./globalBefore)
// actual test 2 here

Обратите внимание, что globalBefore будет работать только один раз, даже если он требуется дважды

Принципы тестирования

Попробуйте ограничить использование внешних зависимостей, таких как базы данных в ваших тестах. Чем меньше внешних зависимостей, тем легче тестирование. Вы хотите иметь возможность выполнять все параллельные тесты параллельно, а общий ресурс, такой как база данных, затрудняет выполнение.

Взгляните на этот раздел Google Tech о написании тестового javascript http://www.youtube.com/watch?v=JjqKQ8ezwKQ

Также обратите внимание на модуль rewire. Он отлично работает для выполнения функций.

Ответ 2

Я обычно делаю это так (скажем, для модели 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()описывается здесь).

Ответ 3

Я сделал эту библиотеку для очистки и импорта светильников для вашего теста.

Таким образом, вы можете импортировать приборы, протестировать и затем очистить свою базу данных.

Посмотрите на следующее:

before(function (done) {
   prepare.start(['people'], function () {
      done();
   });
});

after(function () {
   prepare.end();
});

https://github.com/diogolmenezes/test_prepare