有时 Jest 找不到模块

7
我遇到了这个问题:
有时候在运行测试的时候,jest会找不到某些模块。每次出现的都是随机的模块,而不是同一个。前一两个测试套件会因为这个问题失败,其余的测试通过。有时候一切正常。我使用babel。 package.json中的jest配置:
"jest": {
  "collectCoverageFrom": [
    "src/**/*.js",
    "src/**/*.jsx"
  ],
  "transform": {
    "^.+\\.jsx?$": "babel-jest"
  },
  "moduleDirectories": [
    "node_modules",
    "src"
  ],
  "moduleNameMapper": {
    "\\.(css|less|scss)$": "babel-jest",
    "\\.(jpg|jpeg|png|svg)$": "<rootDir>/fileMock.js"
  },
  "setupFiles": [
    "./testsSetup.js"
  ],
  "testURL": "http://localhost"
},

testSetup.js

const { configure } = require('enzyme')
const Adapter = require('enzyme-adapter-react-16')

configure({ adapter: new Adapter() })

我使用npm test命令来运行测试,其中设置了jest --color --coverage --notify参数。

请问我的配置中是否有遗漏或者存在问题?我没有找到类似的问题。

1个回答

6

我有时会遇到类似的问题 - 通常是在切换到和从具有大量更改的分支时。

清除jest缓存可以解决我的问题。

./node_modules/.bin/jest --clearCache

更多关于 clearCache 的详细信息。
您还可以查看 jestshowconfig 并手动删除 cacheDirectory 位置 - 这与 clearCache 相同。
希望这可以帮到您!

不幸的是它没有 :( 我也尝试了 --no-cache 参数,但结果也没有。有时它可以工作,有时候不行。 - Przemek Lewandowski
1
可能是在并行运行测试时出现了问题,或者在模拟其他测试中使用的某些模块? 如果使用 runInBand 串行运行测试会发生什么? - bamse
似乎这是一个问题和解决方案。非常感谢! - Przemek Lewandowski
很高兴能帮上忙。你测试了导致这个问题的测试吗?runInBand可以解决问题,但测试运行时间会更长。 - bamse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接