Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

156
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda