PhpStorm IDE 无法识别赛普拉斯自定义命令,但在测试运行器中工作
Cypress custom commands not recognized by PhpStorm IDE but working in test runner
我在 Cypress 测试中使用 JavaScript 个文件。
在 commands.js
我创建了一个自定义命令:
Cypress.Commands.add('selectDropdown', (dropdown) => {
cy.get('#' + dropdown).click();
})
And in my test file I call it:
```lang-javascript
cy.selectDropdown('dropdown1');
当我 运行 测试中的测试 运行ner 时,这工作正常。唯一的问题是,我的 IDE (PhpStorm) 无法识别该命令。
未解决的函数或方法 selectDropdown()
如何'tell' IDE,这样的命令存在?
更新:
我在支持文件夹下创建了一个 index.d.ts
文件(但是我在 Cypress 中只使用 JS 文件,我已经有 index.js
)。
我在那个 ts 文件中输入:
/// <reference types="cypress" />
declare namespace Cypress {
interface Chainable<Subject> {
selectDropdownValue(dropdown, value): Chainable<(string)>;
}
}
现在 cy.selectDropdownValue
命令在 IDE 中被识别并且在测试中似乎工作正常 运行ner,但是有一些问题:
我最好避免创建新的 TypeScript 文件,因为我已经在那里 index.js
并且我在项目中只使用 JS 文件
声明命名空间 - 'namespace' 和 'module' 是不允许的(无命名空间) - 这是一个 Lint 警告,因此需要以某种方式替换它
未使用的可链接接口。不确定我是否需要 Chainable
在那里,因为它未被使用,这里还有 selectDropdownValue(dropdown, value): Chainable<(string)>;
谁能帮忙,如何通过 IDE 以 JavaScript 方式识别自定义命令,而不是 TypeScript?
如果您希望 IDE 为您的自定义命令获取 IntelliSense。查看此文档。谢谢
https://github.com/cypress-io/cypress-example-todomvc#cypress-intellisense
好的,所以我按照我在更新中所写的方式解决了它,只是禁用了 lint 检查。
我已经检查了一些原始的 cypress 命令的内置 cypress chainable,并且有相同的结构,所以我用同样的方法做了它并且它有效。
// tslint:disable-next-line:no-namespace
declare namespace Cypress {
interface Chainable<Subject = any> {
selectDropdownValue(dropdown: string, value: string): Chainable<Subject>;
}
}
我在 Cypress 测试中使用 JavaScript 个文件。
在 commands.js
我创建了一个自定义命令:
Cypress.Commands.add('selectDropdown', (dropdown) => {
cy.get('#' + dropdown).click();
})
And in my test file I call it:
```lang-javascript
cy.selectDropdown('dropdown1');
当我 运行 测试中的测试 运行ner 时,这工作正常。唯一的问题是,我的 IDE (PhpStorm) 无法识别该命令。
未解决的函数或方法 selectDropdown()
如何'tell' IDE,这样的命令存在?
更新:
我在支持文件夹下创建了一个 index.d.ts
文件(但是我在 Cypress 中只使用 JS 文件,我已经有 index.js
)。
我在那个 ts 文件中输入:
/// <reference types="cypress" />
declare namespace Cypress {
interface Chainable<Subject> {
selectDropdownValue(dropdown, value): Chainable<(string)>;
}
}
现在 cy.selectDropdownValue
命令在 IDE 中被识别并且在测试中似乎工作正常 运行ner,但是有一些问题:
我最好避免创建新的 TypeScript 文件,因为我已经在那里
index.js
并且我在项目中只使用 JS 文件声明命名空间 - 'namespace' 和 'module' 是不允许的(无命名空间) - 这是一个 Lint 警告,因此需要以某种方式替换它
未使用的可链接接口。不确定我是否需要
Chainable
在那里,因为它未被使用,这里还有selectDropdownValue(dropdown, value): Chainable<(string)>;
谁能帮忙,如何通过 IDE 以 JavaScript 方式识别自定义命令,而不是 TypeScript?
如果您希望 IDE 为您的自定义命令获取 IntelliSense。查看此文档。谢谢 https://github.com/cypress-io/cypress-example-todomvc#cypress-intellisense
好的,所以我按照我在更新中所写的方式解决了它,只是禁用了 lint 检查。
我已经检查了一些原始的 cypress 命令的内置 cypress chainable,并且有相同的结构,所以我用同样的方法做了它并且它有效。
// tslint:disable-next-line:no-namespace
declare namespace Cypress {
interface Chainable<Subject = any> {
selectDropdownValue(dropdown: string, value: string): Chainable<Subject>;
}
}