IDE无法识别Cypress自定义命令,但它可以在测试运行程序中工作
我在Cypress测试中使用javascript文件 在commands.js中,我创建了一个自定义命令:IDE无法识别Cypress自定义命令,但它可以在测试运行程序中工作,cypress,cypress-cucumber-preprocessor,Cypress,Cypress Cucumber Preprocessor,我在Cypress测试中使用javascript文件 在commands.js中,我创建了一个自定义命令: Cypress.Commands.add('selectDropdown', (dropdown) => { cy.get('#' + dropdown).click(); }) 在我的测试文件中,我称之为: cy.selectDropdown('dropdown1'); 当我在TestRunner中运行测试时,它工作得很好。唯一的问题是,我的IDE(PHPStorm)无
Cypress.Commands.add('selectDropdown', (dropdown) => {
cy.get('#' + dropdown).click();
})
在我的测试文件中,我称之为:
cy.selectDropdown('dropdown1');
当我在TestRunner中运行测试时,它工作得很好。唯一的问题是,我的IDE(PHPStorm)无法识别该命令
未解析的函数或方法selectDropdown()
如何“告诉”IDE这样的命令存在
更新:
我在support文件夹下创建了一个index.d.ts文件(但是我只使用带有Cypress的JS文件,并且已经有index.JS了)
在ts文件中,我将:
/// <reference types="cypress" />
declare namespace Cypress {
interface Chainable<Subject> {
selectDropdownValue(dropdown, value): Chainable<(string)>;
}
}
//
声明命名空间Cypress{
可链接接口{
选择下拉值(下拉,值):可链接;
}
}
现在,cy.selectDropdownValue
命令在IDE中被识别出来,它在TestRunner中似乎工作得很好,但是存在一些问题:
selectDropdownValue(dropdown,value):chaineable代码>
任何人都可以帮助,如何识别自定义命令的IDE在javascript的方式,而不是typescript。如果您希望IDE为您的自定义命令获得IntelliSense,请多谢。查看此文档。谢谢
好的,我在更新中写道,我用这种方式解决了这个问题,只是禁用了皮棉检查 我已经检查了一些原始的cypress命令的内置cypress Chaineable,并且有相同的结构,所以我以相同的方式执行了它,它可以工作
// tslint:disable-next-line:no-namespace
declare namespace Cypress {
interface Chainable<Subject = any> {
selectDropdownValue(dropdown: string, value: string): Chainable<Subject>;
}
}
//tslint:禁用下一行:无命名空间
声明命名空间Cypress{
可链接接口{
选择DropDownValue(dropdown:string,value:string):可链接;
}
}
谢谢,所以对于每个自定义命令,我都需要编写可链接的内容。。。嗯,如果没有别的办法的话,没有它我活得更好。如果我在另一个文件中创建一个自定义js函数并从另一个文件调用它,IDE会识别它,但它是我的自定义函数。但无法识别自定义命令。我只想点击那个命令,将我带到定义它的文件…奇怪,但我知道函数与命令不同。谢谢你的链接,不客气。创建自定义函数也是一个好主意,但必须导入所有spec文件才能使用这些方法@DarksymphonyWell,我刚刚发现,文档显示我需要在index.d.ts文件中声明名称空间。但是我没有这样的文件,我没有在cypress中使用typescript,只有js文件,在js中我不能声明名称空间。我知道它不是很好的IDE,但是为了cypress的智能化,我有Visual studio代码,该插件工作得很好,尽管我的主要IDE是PHP storm。另外,PHP storm的版本需要超过2020才能适应它。我相信我使用的是PHP storm 2021,但它无法识别这些自定义命令。我也有VS代码,虽然并没有警告,但我无法通过单击它跳转到自定义命令的声明,即使在VS代码中也是如此。也许然后我会像我提到的那样创建那个.ts文件,但我需要帮助,如何替换我在更新的问题中所写的“declare namespace”。