我使用Jest作为单元测试框架,下面的intellisense是正确的:
然而,当我安装Cypress "cypress": "^3.2.0"
时,同样的代码现在显示错误Property 'toMatch' does not exist on type 'Assertion'. Did you mean 'match'?
。IMO的原因是Cypress在node_modules/cypress/types/chai/index.d.ts
下安装类型,VS Code正在为智能感知挑选它们。Jest和Cypress都依赖于ChaiAssert库。安装Cypress后的智能感知:
有没有办法告诉VS Code在特定文件夹中使用哪个Chai intellisense?或者有没有办法在jsconfig.json
文件中指定它?
4条答案
按热度按时间goucqfw61#
对柏树和笑话也有同样的问题。
我通过创建两个jslog.json
cypress/jsconfig.json
然后一个放在src文件夹里
src/jsconfig.json
重新启动VSCode,它按预期工作
jfgube3f2#
我自己也面对这个问题。
通常我可以把Assert记在心里,但是当你真的需要自动完成时,
(三重斜杠指令)将给予正确的jest类型。
注意:您还需要安装
@types/jest
!sycxhyv73#
解决方案是为Jest中公开的全局变量创建别名,并在JSDoc中用
@type
装饰这些变量。所以,我在我的测试所在的同一个目录下创建了一个文件jestGlobals.js
。jestGlobals.js
文件:(为了简单起见,我只包含了一个全局变量,但你可以对所有全局变量做同样的事情):然后我只需要在
*.spec.js
文件中导入这些变量:现在,当我使用这个别名时,我得到了正确的智能,就像这样:
ioekq8ef4#
在GitHub上找到了这个答案https://github.com/cypress-io/cypress/issues/22059#issuecomment-1148921141
在tslog.json中将
./cypress.config.ts
添加到exclude
对我来说很有效