Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

148
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!