首先,感谢您抽出宝贵的时间阅读本文章。
我会尽力而为,在使用JS时,试图获得Cypress的代码完成有一个荒谬的问题。我一直在尝试我能找到的所有文档,但是我发现这些文档不够全面。
任何人都可以解释
答案 0 :(得分:1)
这些都不适合我,最终Intellis给我的是根据Cypress docs向Cypress文件夹中添加一个tsconfig.json
文件:
{
"compilerOptions": {
"allowJs": true,
"baseUrl": "../node_modules",
"types": ["cypress"]
},
"include": ["**/*.*"]
}
答案 1 :(得分:1)
我刚刚添加
"compilerOptions": {
"types": ["cypress"]
}
到cypress根目录下的tsconfig.json文件中的对象。然后,我从命令面板中选择“重新启动TS服务器”,然后为我整理了一切。
答案 2 :(得分:0)
这是因为您通过.exe
安装了赛普拉斯,这不是建议的赛普拉斯安装方式。
只有通过npm
安装cypress时,才会安装cypress类型定义
为了让VSCode查找类型定义, 您应该将cypress安装为项目的开发依赖项(根据文档,首选安装形式):
npm i -D cypress
答案 3 :(得分:-1)
我也无法使Cypress intellisense正常工作。我获得智能感知的方法令人费解,并且可能是错误的,但我没有使其以任何其他方式起作用。
cypress.d.ts
文件。这声明了cy
类型,因此您可以自动完成大多数赛普拉斯的东西:declare var Cypress: any;
interface CypressElement {
type(value: string, options?: any): CypressElement,
clear(options?: {force: boolean}): CypressElement,
click(options?: {force: boolean}): CypressElement,
should(...args: any): CypressElement,
selectValue(option: number, optionsClass: string):CypressElement,
fillInput(value: string):CypressElement,
eq(index: number): CypressElement,
contains(value: any): CypressElement,
within(...args: any): any,
trigger(...args: any): any;
first(): CypressElement;
}
declare var cy: {
get(select: any): CypressElement;
window(): Promise<any>;
visit(path: any): void;
request(options: any): Promise<any>;
wait(time: string | number): any;
server(): any;
route(...options: any): any;
log(...messages: string[]): any;
contains(selector: string, value: any): any;
stub(...args: any): any;
on(event: string, callback: any): any;
url(): CypressElement;
};
(以这种方式手动声明赛普拉斯的打字充其量似乎有些陌生。但是,尝试使用本机赛普拉斯会产生很多问题)
通过以下方式在tsconf.json
编译器选项中引用该文件:
“ typeRoots”:[“ cypress.d.ts”],
即使cypress代码是用javaScript编写的,这也只启用了Cypress的智能感知功能,因为vscode的智能感知引擎非常依赖打字稿。
我猜因为您没有使用typeScript,所以可能需要在根目录添加一个非常简单的tsconfig
文件(以便您的编辑器可以读取其配置),例如:
{
"compilerOptions": {
"typeRoots": ["cypress.d.ts"],
"target": "es5",
"module": "commonjs",
"lib": [
"es6"
],
"declaration": true,
"removeComments": false,
"stripInternal": true,
// since 2.3
// "strict": true,
"alwaysStrict": true,
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true
},
"files": [
"./index.ts"
]
}
我不知道,也许您可以指示编辑者将cypress.d.ts
加载为typeRoots
。
此后,您应该对cy
变量和来自cy.get()
的对象(在该类型定义中以上称为CypressElement
)具有智能感知。
关于此的一个重要警告是,每当您使用赛普拉斯的新功能时,都需要将其类型手动添加到cypress.d.ts
中以获取智能。