赛普拉斯命令与JS功能

时间:2020-05-11 21:06:21

标签: cypress

Cypress documentation建议使用命令是重用代码段的正确方法,例如

Cypress.Commands.add("logout", () => {
  cy.get("[data-cy=profile-picture]").click();
  cy.contains("Logout").click();
});

cy.logout();

对于像这样的简单情况,为什么我要对普通的JS函数(及其附带的所有不错的IDE辅助)使用命令。将上述代码片段重写为

有什么缺点?
export function logout(){
  cy.get("[data-cy=profile-picture]").click();
  cy.contains("Logout").click();
}

// and now somewhere in a test
logout();

1 个答案:

答案 0 :(得分:0)

根据我使用 Cypress 的经验(一年项目和数百个测试用例),我可以说计划 JS 函数非常适合对 cy 命令进行分组。

从我的角度来看,自定义 cy 命令可能只有在将其合并到链处理中时才真正有用(利用主题参数或返回 Chainable 以在链中进一步使用)。否则,简单的 JS 函数更可取,因为它简单且完全支持 IDE。

如果您出于任何原因需要在 cypress 循环中执行某些操作,您始终可以通过 cy.wrap(null).then() 将代码包装在一个普通的 JS 函数中:

      function myFunction() {
        cy.wrap(null).then(() => {
          console.log(("I'm inside the Cypress event loop"))
        })
      }