我有一个Mocha集成测试,作为Node测试脚本的一部分。合并新功能后,测试在本地发布分支上一致通过。在将代码合并到master中并尝试在不同的环境(让我们称之为env B(上构建Jenkins作业之后,在该环境中,相同的测试总是失败。
该测试包含一个Chai浅DeepEqual断言。测试失败是因为(出于某种原因(预期结果和实际结果的项目顺序不同。显然,编辑断言不是一种选择。
我尝试过的:
- 在本地运行npm install,确实修改了一些包,但对测试没有影响
- 检查了本地和环境B上的节点版本。将本地版本更改为环境B上使用的版本(我使用的是nvm,节点版本是v12 LTS(对测试没有影响
经过一番挖掘,我发现这个问题可能与Jenkins缓存有关,但我没有发现在构建之前强制清除缓存的简单方法。
npm安装(1(后,我注意到package-lock.json文件与当前分支存在差异。在提交并合并diff之后,Jenkins作业现在通过了。
我认为测试失败是因为Jenkins使用了缓存的依赖项。在我承诺之后在package-lock.json的新版本中,Jenkins可能已经注意到依赖项发生了变化,并重新构建了缓存。