我有几个使用Karma运行Jasmine单元测试的项目。我们使用npm进行包管理,使用Grunt构建JavaScript项目并执行单元测试任务。提交后,这些项目将通过Jenkins作业自动构建。
在Windows上,我的项目成功构建。然而,当Jenkins在Linux上运行构建时,我会随机看到单元测试失败,这些失败似乎是由我的文件的先前版本引用引起的。
例如,我有一个以前称为的课程:
alert('Cannot retrieve report with the following url: report');
最近改为致电:
alert('There was an error trying to retrieve report with ID: 123');
当我在Windows上本地运行单元测试时,每个测试都成功运行。当Jenkins在Linux上运行它们时,测试会失败并输出:
预期的间谍警报被调用['出现错误 尝试检索ID为123的报告,但实际调用是[ '无法使用以下网址检索报告:报告']
似乎某个地方正在引用我的文件的旧版本。有可能某些东西(Jenkins,Node模块等)正在缓存我的文件吗?
我已经验证我的Jenkins工作区包含单元测试失败的文件的正确版本。我还从package.json中删除了任何波形符,并使用了npm shrinkwrap来确保我完全控制了我的依赖项。我已经多次擦拭我的工作区并创造了多个工作,但我似乎无法摆脱这个问题。