Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

149
Visualizações
El comando personalizado que llama a otro comando personalizado no obtendrá su valor en Cypress

Tengo un objeto y necesito modificar algunos de sus atributos. Para esto estoy usando comandos personalizados y el primero modifica un par de ellos cuando el segundo modifica solo uno pero ejecuto el segundo comando personalizado del primero. Cuando ejecuto mi prueba, el atributo modificado por el segundo comando es nulo. ¿Cómo puedo hacer esto?

Aquí hay una muestra de cómo se ve mi código:

 Cypress.Commands.add("firstCommand", (varA, objectB) => { let aBody = {}; aBody.a = varA; cy.modifiesOtherAttr(aBody, objectB); }) Cypress.Commands.add("modifiesOtherAttr", (aBody, objectB) => { aBody.b = objectB.attrb; })

Entonces mi prueba solo llama al primer comando

 describe("a suite name", () => { it("my test name", () => { cy.firstCommand(variable, object); }) })
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Idealmente, desea ser específico sobre el valor de retorno de cada comando personalizado.

Sin embargo, Cypress recogerá el último comando dentro del comando personalizado y devolverá su asunto. Pero dentro de firstCommand el último comando es modifiesOtherAttr , que no tiene un valor de retorno ni ningún comando cy , por lo que Cypress devuelve undefined , que es lo que devuelve firstCommand .

Dado que crea un nuevo objeto aBody , debe devolverse explícitamente.

 Cypress.Commands.add("firstCommand", (varA, objectB) => { let aBody = {}; aBody.a = varA; cy.modifiesOtherAttr(aBody, objectB) cy.wrap(aBody) // this is the return value }); Cypress.Commands.add("modifiesOtherAttr", (aBody, objectB) => { aBody.b = objectB.attrb // "side effect" happens here, nothing returned });

O

 Cypress.Commands.add("firstCommand", (varA, objectB) => { let aBody = {}; aBody.a = varA; cy.modifiesOtherAttr(aBody, objectB) // this is the return value }); Cypress.Commands.add("modifiesOtherAttr", (aBody, objectB) => { aBody.b = objectB.attrb cy.wrap(aBody) // this is the return value });

explícito es mejor

 Cypress.Commands.add("firstCommand", (varA, objectB) => { let aBody = {}; aBody.a = varA; cy.modifiesOtherAttr(aBody, objectB) return cy.wrap(aBody) // this is the return value }); Cypress.Commands.add("modifiesOtherAttr", (aBody, objectB) => { aBody.b = objectB.attrb return cy.wrap(aBody) // this is the return value });
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda