我正在使用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与数据库结合使用的方法有哪些,其中每个测试均与原始数据库一起运行?