随机失败的测试 jest 和 supertest Node.js

lek*_*ble 5 javascript testing node.js express jestjs

长话短说,我正在开发 RESTapi,它在向 /movies 路由发送 POST 请求时获取电影标题,从外部 api 获取有关该电影的信息并将该对象保存到数据库中。在 POST /comments 上,您将评论添加到不同的集合,但每个评论都有一个带有关联电影的“movie_id”属性。

这是我的第一个更大的项目,所以我正在尝试编写集成测试。一切都很好,至少在我看来,除了 3 个突然失败的奇怪测试用例。测试可以连续通过 10 次,然后突然出现那个奇怪的“开玩笑”计时器,3 个案例失败。

我正在使用本机 mongodb 驱动程序、express 和 jest 与 supertest 进行测试,删除测试数据库 BeforeAll 和 AfterEach,我不知道这是什么原因。

计时器东西: 在此处输入图片说明

计时器出现后,测试失败: 在此处输入图片说明

完整的源代码在这里GITHUB

其他失败案例: 在此处输入图片说明 在此处输入图片说明

任何想法,提示?

小智 13

我遇到了同样的地狱“玩笑并行测试”问题,我找到了一个解决方案,也许不是最好的,但现在玩笑在“队列模式”下运行测试,所以当我删除beforeAll下一组测试中的数据时,我已经准备好使用“新鲜” " 新插入的数据。

--runInBand 别名:-i。在当前进程中串行运行所有测试,而不是创建运行测试的子进程的 > 工作池。这对于调试很有用。

笑话来源

所以在我的 config.json 我有:

    "scripts": {
        "test": "set NODE_ENV=test&& jest ./tests --runInBand --detectOpenHandles --forceExit",
        "server": "set NODE_ENV=development&& nodemon app.js"
    }
Run Code Online (Sandbox Code Playgroud)