VS Code Jest 和 Cypress intellisense 不能与 Chai 一起正常工作
VS Code Jest and Cypress intellisense doesn't work properly with Chai
我正在使用 Jest 作为单元测试框架,下面的智能感知是正确的:
但是,当我安装 Cypress "cypress": "^3.2.0"
时,相同的代码现在显示错误 Property 'toMatch' does not exist on type 'Assertion'. Did you mean 'match'?
。 IMO 的原因是 node_modules/cypress/types/chai/index.d.ts
下的赛普拉斯安装类型,而 VS Code 正在为智能感知选择它们。 Jest 和 Cypress 都依赖于 Chai 断言库。安装 Cypress 后的 Intellisense:
有没有办法告诉 VS Code 在特定文件夹中使用哪个 Chai intellisense?或者有什么方法可以在 jsconfig.json
文件中指定它?
解决方案是为 Jest 中公开的那些全局变量创建别名
并在 JSDoc 中用 @type
修饰这些变量。因此,我在测试所在的同一目录中创建了一个文件 jestGlobals.js
。
jestGlobals.js
文件:(为了简单起见,我只包含了一个全局变量,但您可以对所有全局变量执行相同的操作):
/** @type {jest.Expect} */
// @ts-ignore
let expect = global.expect
export { expect }
然后我将这些变量导入我的 *.spec.js
文件中:
import { expect } from './jestGlobals'
现在,当我使用这个别名时,我得到了正确的智能感知,如下所示:
我自己也面临这个问题。
通常我可以记住输入断言,但是当你真的需要自动完成时,添加
/// <reference types="jest" />
(A triple-slash directive) 在你的测试套件文件的顶部会给你正确的笑话类型。
注意:您还需要安装 @types/jest
!
与 cypress 和 jest 有同样的问题。
我通过创建两个 jsconfig.json
解决了它
cypress/jsconfig.json
{
"typeAcquisition": { "include": ["cypress"] }
}
然后一个用于我的 src 文件夹
src/jsconfig.json
{
"typeAcquisition": { "include": ["jest"] }
}
重新启动 VSCode 并且按预期工作
我正在使用 Jest 作为单元测试框架,下面的智能感知是正确的:
但是,当我安装 Cypress "cypress": "^3.2.0"
时,相同的代码现在显示错误 Property 'toMatch' does not exist on type 'Assertion'. Did you mean 'match'?
。 IMO 的原因是 node_modules/cypress/types/chai/index.d.ts
下的赛普拉斯安装类型,而 VS Code 正在为智能感知选择它们。 Jest 和 Cypress 都依赖于 Chai 断言库。安装 Cypress 后的 Intellisense:
有没有办法告诉 VS Code 在特定文件夹中使用哪个 Chai intellisense?或者有什么方法可以在 jsconfig.json
文件中指定它?
解决方案是为 Jest 中公开的那些全局变量创建别名
并在 JSDoc 中用 @type
修饰这些变量。因此,我在测试所在的同一目录中创建了一个文件 jestGlobals.js
。
jestGlobals.js
文件:(为了简单起见,我只包含了一个全局变量,但您可以对所有全局变量执行相同的操作):
/** @type {jest.Expect} */
// @ts-ignore
let expect = global.expect
export { expect }
然后我将这些变量导入我的 *.spec.js
文件中:
import { expect } from './jestGlobals'
现在,当我使用这个别名时,我得到了正确的智能感知,如下所示:
我自己也面临这个问题。
通常我可以记住输入断言,但是当你真的需要自动完成时,添加
/// <reference types="jest" />
(A triple-slash directive) 在你的测试套件文件的顶部会给你正确的笑话类型。
注意:您还需要安装 @types/jest
!
与 cypress 和 jest 有同样的问题。
我通过创建两个 jsconfig.json
解决了它cypress/jsconfig.json
{
"typeAcquisition": { "include": ["cypress"] }
}
然后一个用于我的 src 文件夹
src/jsconfig.json
{
"typeAcquisition": { "include": ["jest"] }
}
重新启动 VSCode 并且按预期工作