首页 > 解决方案 > 如果不在手表模式下,为什么 Jest 测试会随机失败?

问题描述

我有一个奇怪的问题。如果我跑

jest --watch

通过 npm,一切都按预期工作。

如果我打开覆盖,那么我会得到随机错误,主要是这样的

ENOENT: no such file or directory, lstat

更多细节

可靠的命令定义package.json为:

"test": "jest --watch --config jest-watch.json",

不可靠的命令是

"test-all": "jest"

我们使用一个jest.config.js文件:

module.exports = {
  verbose: false,
  testURL: 'http://localhost/',
  coverageReporters: ['json', 'lcov', 'html'],
  collectCoverageFrom: [
    '<rootDir>/src/**/*.{js,jsx}',
    '!**/node_modules/**',
    '!**/vendor/**',
    '!**/coverage/**',
    '!<rootDir>/lambda.js',
    '!<rootDir>/server.js'
  ],
  collectCoverage: true,
  coverageThreshold: {
    global: {
      statements: 40,
      branches: 17,
      functions: 18,
      lines: 41
    }
  },
  setupFilesAfterEnv: ['<rootDir>/setupTests.js'],
  testPathIgnorePatterns: ['<rootDir>/lambda.js', '<rootDir>/server.js']
};

并且“jest-watch.config”文件是:

{
  "collectCoverage": false,
  "setupFilesAfterEnv": ["<rootDir>/setupTests.js"]
}

这发生在我使用 jest 的每个项目中,包括节点和反应应用程序。但是,我有大约 10 多个队友,一些在 Windows 上,一些在 Mac 上,没有其他人遇到这个问题。我相信我是唯一一个使用 WSL(Linux 的 Windows 子系统)的人。

我正在运行 Windows 10 1803。我使用 Ubuntu 作为我的 Linux 发行版。

关于可能导致这种情况的任何想法?

标签: jestjswindows-subsystem-for-linux

解决方案


我没有测试它,但你的配置看起来不错,我有一些问题:

1-您在项目中使用 jest Global 还是 local?2-当你在项目文件夹“npm run test”中运行时发生了什么?3-您是否尝试在项目文件夹中运行“jest --watch”?

注意:因为您使用的是 WSL,所以应该检查 bash 配置、shell 和 $PATH 环境变量。


推荐阅读