cod*_*der 6 intellisense jestjs visual-studio-code cypress
我使用 Jest 作为单元测试框架,下面的智能感知是正确的:
但是,当我安装 Cypress 时"cypress": "^3.2.0",相同的代码现在显示 error 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 都依赖于 Chai 断言库。安装 Cypress 后的 Intellisense:
有没有办法告诉 VS Code 在特定文件夹中使用哪个 Chai 智能感知?或者有什么方法可以在jsconfig.json文件中指定它?
小智 9
cypress 和 jest 也有同样的问题。
我通过创建两个 jsconfig.json 解决了这个问题
赛普拉斯/jsconfig.json
{
"typeAcquisition": { "include": ["cypress"] }
}
Run Code Online (Sandbox Code Playgroud)
然后是我的 src 文件夹
src/jsconfig.json
{
"typeAcquisition": { "include": ["jest"] }
}
Run Code Online (Sandbox Code Playgroud)
重新启动 VSCode,它按预期工作
我自己也面临这个问题。
通常我可以用心输入断言,但是当你确实需要自动完成时,添加
/// <reference types="jest" />
Run Code Online (Sandbox Code Playgroud)
(三斜杠指令)在测试套件文件的顶部将为您提供正确的笑话类型。
注意:您还需要@types/jest安装!
解决方案是为Jest中公开的那些全局变量创建别名
,并在 JSDoc 中修饰这些变量@type。jestGlobals.js因此,我在测试所在的同一目录中创建了一个文件。
jestGlobals.js文件:(为了简单起见,我只包含一个全局变量,但您将对所有全局变量执行相同的操作):
/** @type {jest.Expect} */
// @ts-ignore
let expect = global.expect
export { expect }
Run Code Online (Sandbox Code Playgroud)
然后我只需将这些变量导入我的*.spec.js文件中:
import { expect } from './jestGlobals'
Run Code Online (Sandbox Code Playgroud)
现在,当我使用这个别名时,我得到了正确的智能感知,如下所示:

| 归档时间: |
|
| 查看次数: |
5636 次 |
| 最近记录: |