Как использовать JestJS с базой данных? - PullRequest
1 голос
/ 07 мая 2019

Я работаю над новым проектом, используя Jest, Express и Sequelize для создания API.

У меня работают некоторые конечные точки, и я пишу тесты для каждой из моих конечных точек.

Исходя из мира Ruby on Rails, я привык писать тесты, в которых база данных очищается между каждым тестом.

Это кажется невозможным в Jest, потому что, похоже, нет способа не проводить тесты, которые забивают базу данных, поскольку все они работают параллельно

Имея это в виду, я создал эту глобальную beforeAll функцию в tests/support/setup.js и настроил Jest для использования этого метода до запуска всех моих спецификаций:

// package.json
{...
"jest": {
    "setupFilesAfterEnv": [
      "<rootDir>/tests/support/setup.js"
    ]
  }
}
// tests/support/setup.js

import models from '../../db/models'


global.beforeAll(async () => {
  await models.sequelize.drop()
  await models.sequelize.sync()
})

Но, похоже, это тоже не сработает, но я думаю, что на самом деле метод beforeAll запускается перед каждым набором тестов .... поэтому база данных по-прежнему блокируется.

В данный момент Jest кажется мне бесполезным при использовании с базой данных. Я что-то упустил?

Каковы некоторые методы использования Jest с базой данных, где каждый тест выполняется с первичной базой данных?

...