我是柏树的新人,我正在尝试用打字稿学习柏树。
尝试添加自定义命令时遇到问题。
Cypress.Commands.add('getEnvURL', (environment) => {
if(environment === ('Dev')){
return 'testURL';
} else if (environment === ('Stagging')){
return 'StaggingURL';
}
});
declare global {
namespace Cypress {
// tslint:disable-next-line:interface-name
interface Chainable<Subject> {
getEnvURL(environment: string): string;
}
}
}
规格文件
it('Login Test', () => {
cy.visit(cy.getEnvURL(Cypress.env('environment')));
});
当我尝试从规格文件中调用getEnvURL()自定义方法时,我期望它会返回URL字符串。当我运行测试时,它什么也没做。
有人可以帮我解决这个问题吗
答案 0 :(得分:1)
问题应该出在您的代码行上。
cy.visit(cy.getEnvURL(Cypress.env('environment')))
cy.getEnvURL返回一个对象,而不是返回值'testURL'或'StaggingURL'。
您可以尝试使用此代码吗?
cy.getEnvURL(Cypress.env('username')).then(($url) => {
cy.visit($url)
})
答案 1 :(得分:1)
说到cy命令或自定义命令,它们总是异步返回结果。您只能在 then 块中使用实际结果数据。 https://docs.cypress.io/guides/core-concepts/introduction-to-cypress.html#Subject-Management
我认为,cy命令不是您所需要的。我希望变量 environment 会在您的应用启动之前设置,并且不会在运行时更改。如果是这样,您只需要创建一个简单的模块 test-utils.ts 或任何位于 cypress / utils 下的东西。
export const getEnvUrl = (env: string) => {
const env = Cypress.env('environment')
if (env === 'staging') {
return 'staging-url'
} else {
return 'test-url'
}
}
在柏树测试中,您可以直接使用
cy.visit(getEnvUrl())