我遇到了一个非常奇怪的问题。
我创建了一个非常简单的赛普拉斯项目,仅是示例测试用例,而没有任何其他devDependencies赛普拉斯。
当我第一次在Visual Studio代码中打开该项目时,将鼠标悬停在某个方法上后,我会看到带有一些签名帮助的弹出窗口,然后右键单击选择为“转到定义”的方法,便可以打开该文件。
在我编写代码“ cy。”之后发生了奇怪的事情,它应该给我智能代码建议,但是对任何方法都没有任何建议和鼠标悬停,“签名”帮助消失了,右键单击该方法选择了“转到定义”我得到“找不到“ XXX”的定义”
我问了很多开发人员,但没人能回答,请帮忙,谢谢!
答案 0 :(得分:5)
请检查文件顶部是否有triple-slash directive,例如
/// <reference types="Cypress" />
在这种情况下,请尝试在cypress
文件夹中添加tsconfig.json
。从赛普拉斯文档中,具有以下配置的tsconfig.json应该可以智能完成代码。
{
"compilerOptions": {
"allowJs": true,
"baseUrl": "../node_modules",
"types": [
"cypress"
]
},
"include": [
"**/*.*"
]
}
答案 1 :(得分:1)
我的行为与您在9月23日的评论中描述的相同。我意识到这是由我的自定义cypress命令引起的。在链接我的自定义命令之前,我将获得代码完成,但之后没有。
为解决此问题,我在cypress/support
中添加了一个包含以下内容的index.d.ts
文件:
declare namespace Cypress {
interface Chainable<Subject> {
/**
* Log in via UI
* @example
* cy.login(username: string, password: string)
*/
login(): Chainable<any>
/**
* Log in via API
* @example
* cy.apiLogin()
*/
apiLogin(): Chainable<any>
/**
* Wait for viewer to load
* @example
* cy.waitForFirstLoad()
*/
waitForFirstLoad(): Chainable<any>
/**
* Log out
* @example
* cy.logout()
*/
logout(): Chainable<any>
}
}
我还对cypress/tsconfig.json
进行了如下修改:
{
"compilerOptions": {
"allowJs": true,
"baseUrl": "../node_modules",
"types": ["cypress", "../support"]
},
"include": ["**/*.*"]
}
希望有帮助
答案 2 :(得分:0)
您可以覆盖赛普拉斯的配置文件,以使“智能代码完成”功能在整个项目中都可用。
要执行此操作,请转到 projectName / cypress.json 并添加以下内容:
{
"$schema": "https://on.cypress.io/cypress.schema.json"
}
答案 3 :(得分:0)
经过数小时的艰苦研究,我发现,如果您不想在每个文件的顶部都包含三斜杠指令,则可以在index.d.ts
文件中执行此操作:< / p>
declare global {
namespace Cypress {
interface Chainable<Subject> {
/**
* Should login
* @param user
* @example cy.login()
*/
login(user?: string): Chainable<any>;
}
}
}
这是修复我的VS Code IntelliSense的原因,因此我的自定义命令将自动完成,将鼠标悬停在它们上将显示JSDocs。