3

我有一个使用create-react-app. 当我第一次创建项目时,测试运行良好。我决定在一段时间没有运行测试后运行测试(我还没有写任何东西,所以生成的测试类就是我所拥有的),现在我收到以下错误:

Determining test suites to run...Error: spawn git ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
    at onErrorNT (internal/child_process.js:344:16)
    at nextTickCallbackWith2Args (node.js:442:9)
    at process._tickCallback (node.js:356:17)

Git 肯定在路上,我可以从命令行运行git --version它并按预期输出。如果我在 cygwin 或 windows 命令行中运行,我会得到同样的错误。

我的 package.json 看起来像:

{
  "name": "my-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "immutable": "^3.8.1",
    "react": "^15.5.4",
    "react-dom": "^15.5.4"
  },
  "devDependencies": {
    "react-scripts": "0.9.5"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}

编辑:经过一番玩耍后,我发现我的测试仅在项目位于 git 存储库中时才会失败。如果我获取项目的副本,没有“.git”文件夹,然后从副本中运行测试,它们都运行良好。

4

1 回答 1

3

我最终弄清楚是什么原因造成的。当 git 作为 Jest watcher 的一部分启动时,我的本地设置导致错误(仍然不清楚是什么)。从 create-react-app 文档:

默认情况下,当您运行 npm test 时,Jest 将仅运行与自上次提交以来更改的文件相关的测试。这是一种优化,旨在使您的测试无论您有多少测试都可以快速运行。但是,它假定您不经常提交未通过测试的代码。

资源

像在 CI 环境中运行测试一样运行测试,set CI=true&&npm test绕过了 git 功能,我可以运行我的测试。更多信息在这里

jest项目中还有一个开放的bug:https ://github.com/facebook/jest/issues/3214

于 2017-04-27T11:00:52.437 回答