首页 > 解决方案 > MongoError:无法创建集合用户 - 数据库正在被删除

问题描述

我有一个 REST API,我正在为这个项目编写 TDD。我的 TDD 由两部分组成:路由和服务。我选择使用Jest。我有一个用于测试的MongoDB数据库。每次测试完成后,我都会使用该afterAll()方法重置我的数据库。在这种方法中,我运行该mongoose.connection.dropDatabase函数。

当我只运行一个测试文件时没有错误,但是当我运行多个测试文件时,我得到一个错误。错误信息:

MongoError:无法创建集合 auth-db.users - 数据库正在被删除。

我与您分享示例代码:

users.route.test.ts:

https://gist.github.com/mksglu/8c4c4a3ddcb0e56782725d6457d97a0e

users.service.test.ts:

https://gist.github.com/mksglu/837202c1048687ad33b4d1dee01bd29c

当我所有的测试运行时,“ sometimes”给出错误。我写了上面的错误信息。此错误的原因是重置过程仍在继续。我无法解决这个问题。如果您能提供帮助,我将不胜感激。

谢谢。

标签: node.jsmongodbunit-testingtddjestjs

解决方案


https://jestjs.io/docs/en/cli.html#runinband

您正在寻找的是 --runInBand 命令。这使得 jest 可以串行运行,而不是创建运行测试的子进程的工作池


推荐阅读