Я работаю над новым проектом, используя 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 с базой данных, где каждый тест выполняется с первичной базой данных?