unit-testing - 与 Jest 的竞争条件

标签 unit-testing sequelize.js jestjs

我正在测试我的 graphql 端点,该端点通过 Jest 的 sequelize 对 DB 进行查询。但有时我发现我的测试文件有点竞争条件。我的意思是,对于每个测试文件,我都有一个设置 DB 块,例如

beforeAll(async () => {
  await database.sequelize.sync({force: true})
  await database.User.create(user)
})

以便在测试文件中我可以轻松预测数据库中的内容。有时这会导致每个测试文件尝试执行的问题 .sync() .一个测试文件将创建数据库,而另一个执行删除数据库。

即使我用过 await在我的测试中,这看起来并不能保证测试文件将等待另一个测试完成。

这里最好的方法是确保每个测试文件都可以通过拥有干净的数据库来预测数据库中的内容,同时又不与其他测试发生冲突?让测试等待其他人完成实际上是一个好主意吗?对我来说似乎没有优化,因为运行整个测试套件需要更多时间。

最佳答案

你用了多少 worker ?测试在同一个测试文件中连续运行,但不在不同的测试文件之间运行。

有多种选择可以尝试:
1 - 为每个测试文件创建和使用唯一的数据库。
2 - 使它们全部与 --runInBand 串行运行旗帜。我不确定,但也许 --maxWorkers=1也这样做。

关于unit-testing - 与 Jest 的竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45579694/

相关文章:

java - 单元测试: Is dependency between tests is a good idea at all?

node.js - Sequelize.js 使用 hasMany 连接表两次

react-native - 如何解决测试中的 NativeModule.RNLocalize is null 错误?

node.js - 如何对扩展抽象类读取环境变量的类进行单元测试

oracle - Oracle PL/SQL测试如何实现测试隔离?

c# - 我是否正确编写了单元测试? NUnit + NSubstitute

java - 使用 Mockito 根据调用时间更改模拟对象行为?

node.js - 无法启动 nodemon 环境

node.js - SequelizeDatabaseError : null value in column "name" violates not-null constraint (NodeJS + Sequelize + Postgres)

javascript - Puppeteer 无法上传文件,出现 TypeError : Failed to fetch