VSCode Jest扩展无法正常工作。

19

我正在使用 VSCode,并安装了名为 "Jest" 的扩展程序以获得更好的Jest测试环境。

在这个扩展程序的说明中,我看到我们可以获得Jest命令的良好的智能提示支持

问题:

  1. 我在底部栏中没有看到“Jest”图标,这意味着这个扩展程序不能正常工作。

  2. 我仍然没有获得Jest命令的智能提示支持。

我的问题:

有人遇到过这个问题并找到了正确的配置方法吗?


你尝试过使用这个了吗?如果你遇到了上述问题,但是在底部栏中没有看到“Jest”字样,请运行“打开开发者工具”命令,并查看是否有任何崩溃信息。我们很乐意知道是什么导致了这个问题,最好能提供一个可供测试的项目。 - robi24
@robi 我看到了这个,但不确定在哪里运行这个命令?我正在Windows 10上运行它,只是在终端中输入它并不能工作。我还尝试在***vscode命令面板中运行它,但它也没有工作。 - ueeieiie
如果您仍然热衷于让 vscode-jest 运行起来,请在存储库上重新开始这个对话。我们需要更多的贡献者参与到这个项目中。https://github.com/jest-community/vscode-jest/issues - Sean
6个回答

14

解决方案:

当我明白我的文件夹结构是导致扩展无法正常工作的原因时,我开始使用 VSCode 的 Workspaces

说明:

使用Workspaces可以在一个文件夹中拥有多个项目。 每个项目将被视为根项目。 Workspace 允许您在同一文件夹中拥有多个根项目(这实际上解决了我的问题)。

当使用 Jest 时没有设置 jest.config.js 文件,您将获得默认的 rootDir(即 package.json 所在的文件夹)。

P.S.

从我目前的经验来看,vscode-jest 扩展程序并不是非常稳定,仍然存在一些错误。所以在我的情况下,我决定暂时禁用它。


是的,工作区非常好用。我的网站源代码在子目录中,插件无法识别我的jest文件。我可以在子目录中添加一个空的jest.config文件,或将此子目录添加为工作区(文件->添加文件夹到工作区)。 - FrankyHollywood

11
强烈建议使用jest runner扩展程序代替。 演示:

]


17
请不要仅仅将某些工具或库作为答案发布。至少在答案中演示它是如何解决问题的。 - double-beep
对我来说,它可以直接使用,而不像jest扩展那样需要额外的配置。 - Édouard Lopez

6
在安装该扩展程序的新环境中,它也不能立即正常工作。在WSL2终端上运行npm run test是可以的,但扩展程序不行。
我的文件夹结构如下:
root
__tests__
         __testThis__
                     featureA.js    <-- jest tests
         __andThis__
                    feature1.js     <--
                    feature2.js     <--
testThis.js
andThis.js
package.json

我的测试脚本最初是这样的:"test": "jest --watchAll --maxWorkers=1",放在我的package.json文件中。

但是我做了以下操作后,它终于起作用了:

(1) Jest图标未出现在底部状态栏中

  • Specify jest.rootPath in .vscode/settings.json . Documentation elaborates more on this here.
  • I set mine as "" (empty) since I used testMatch to find my tests.
    "jest.rootPath": "",
    

(2) jest命令未找到

  • 确保在jest扩展所使用的shell中已安装jest和jest-cli
  • 我一直在使用WSL2运行测试,没有遇到任何问题(没有使用扩展),但在使用扩展时遇到了"jest命令未找到"。
  • 在Git Bash上安装了jest和jest-cli之后,这个问题就不再存在了。

(3) 扩展程序运行了一小段时间,然后出现“watch-tests”意外终止

  • Instead of using the Jest extension wizard, I ran jest --init at the root of my project to create a jest.config.js. This updates the test script to "test": "jest" -- I left this as is after.
  • enable testMatch in the resulting jest.config.js, so jest knows where to look for tests
    testMatch: [
       "**/__tests__/**/*.[jt]s?(x)",
       "**/?(*.)+(spec|test).[tj]s?(x)"
    ],
    

(4) 测试最终会运行,但它们会重复运行直到 CPU 使用率达到 ~ 90%

  • turn jest autoRun off in .vscode/settings.json
    "jest.autoRun": "off",
    
  • click thru the jest extension's side bar icon (the Erlenmeyer flask) to run tests only as needed

即使如此,扩展程序中的并非所有功能都能完美运作(例如,调试器对我来说仍然无法工作),但是我可以使用该扩展程序运行单个测试(或一次性运行所有测试)

希望这些内容能够有所帮助!


设置根路径对我来说起作用了。 - undefined

2
我遇到了同样的问题。我只需在我的 monorepo 根目录下放置一个 jest.config.js 文件,扩展程序就能够识别它。对我来说,问题是它从根路径开始查找该文件,但却找不到它。

在我的情况下,拥有类似的设置(单一代码库),在根目录下创建一个空的jest.config.js最终解决了问题(Jest 29.0.3)。 - swimmer

0
在浪费了很多时间并安装了许多扩展之后,我发现我们必须将@types/jest作为开发依赖项安装,以使我们的智能感知在VSCode中正常工作。 npm i -d @types/jest

enter image description here

注意:如果安装@type/jest不起作用,请尝试重新启动VSCode。我还附上了我的package.json供参考,以便您可以查看是否还缺少其他与Jest相关的内容。

enter image description here


-1

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