Javascript 有没有办法使自定义命令在命名空间或Cypress中的对象中可用?
我有一个typescript项目,其中很少有“Cypress自定义命令”执行如下导航:Javascript 有没有办法使自定义命令在命名空间或Cypress中的对象中可用?,javascript,typescript,cypress,Javascript,Typescript,Cypress,我有一个typescript项目,其中很少有“Cypress自定义命令”执行如下导航: Cypress.Commands.add('goToHome', () => { /* Logic here */ }); Cypress.Commands.add('goToProducts', () => { /* Logic here */ }); 现在。我可以像这样运行这些命令:cy.goToHome() 但是,我希望这些命令不是可以从cy对象访问的,而是可以从如下自定义对象访问这些命令
Cypress.Commands.add('goToHome', () => { /* Logic here */ });
Cypress.Commands.add('goToProducts', () => { /* Logic here */ });
现在。我可以像这样运行这些命令:cy.goToHome()代码>
但是,我希望这些命令不是可以从cy
对象访问的,而是可以从如下自定义对象访问这些命令:
Cypress.Commands.add('goToHome', () => { /* Logic here */ });
Cypress.Commands.add('goToProducts', () => { /* Logic here */ });
cy.header.goToHome()代码>或cy.getHeader().goToHome()代码>
在Cypress中有什么方法可以做到这一点吗?好的,您可以定义一个类,该类包含只能从该名称空间访问的函数。这是组织代码并保持其整洁的好方法
例如,将文件navigation.js添加到您的支持文件夹中。添加以下代码:
class Navigation {
goToHome(){ /* Logic here */ }
goToProducts() { /* Logic here */ }
}
export default new Navigation();
然后,将其适当地导入到等级库文件中:
import Navigation from '../../support/navigation';
然后,在spec文件中,您将能够通过导航名称空间访问这些函数。例如:
it('I can navigate to the homepage', function() {
Navigation.goToHome();
})
希望这就是你的意思,而且很有帮助。谢谢你的详细回答,我知道我可以创建一个帮助器类,并在那里使用我的帮助器函数。但是我想知道是否有一种方法可以从全局cy
对象访问它。