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

480
Vistas
Práctica recomendada de Cypress: almacene y compare dos valores

Quiero almacenar un valor, luego realizar una acción y afirmar que el valor no ha cambiado. Tengo un código que funciona, pero me gustaría tener información si hay una solución más elegante.

La idea básica es:

  • Obtenga el número o los resultados que se muestran ('recuentos'), guárdelo en una función .then()
  • cambiar el uso
  • Obtenga la cantidad de resultados que se muestran ('new_counts'), guárdelo en una nueva función .then
  • Compare recuentos y nuevos_recuentos en la segunda función .then()
 describe('Store and compare a value', () => { it('store and compare', () => { cy.login() cy.visit('url2') cy.get('.total-count-results').invoke('text') .then((text) => { const counts = text cy.get('.medium.col100 > .filterwrapper > input').type('Test Dummy',{force: true}) cy.get('.medium.col100 > .filterwrapper > input').type('{enter}') cy.get('.total-count-results').invoke('text') .then((text) => { const new_counts = text expect(new_counts).to.eq(counts) }) }) }) })

Eso es lo mejor que se me ocurrió para manejar la asincronía.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

No creo que se requieran alias. Aquí está mi solución que probé localmente. Mantuve la mayor parte del código en la respuesta de Alapan Das para que sea más fácil de comparar. A mí me parece más conciso y fácil de leer sin alias.

 describe('Store and compare a value', () => { it('store and compare', () => { cy.login() cy.visit('url2') cy.get('.total-count-results').invoke('text') .then((previousText) => { cy.get('.medium.col100 > .filterwrapper > input').type('Test Dummy',{force: true}) cy.get('.medium.col100 > .filterwrapper > input').type('{enter}') cy.get('.total-count-results').invoke('text').should("eq", previousText) }) }) })
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar alias para esto y hacer algo como esto:

 describe('Store and compare a value', () => { it('store and compare', () => { cy.login() cy.visit('url2') cy.get('.total-count-results').invoke('text').as('counts') cy.get('.medium.col100 > .filterwrapper > input').type('Test Dummy', { force: true, }) cy.get('.medium.col100 > .filterwrapper > input').type('{enter}') cy.get('.total-count-results').invoke('text').as('new_counts') cy.get('@counts').then((counts) => { cy.get('@new_counts').then((new_counts) => { expect(new_counts).to.eq(counts) }) }) }) })
about 4 years ago · Juan Pablo Isaza Denunciar

0

Una buena solución para comparar valores como este puede ser usar una variable de cierre, según el ejemplo en la documentación de Cypress en https://docs.cypress.io/api/commands/should#Compare-text-values-of-two -elementos . En tu ejemplo, algo como esto:

 describe('Store and compare a value', () => { it('store and compare', () => { let counts // closure variable cy.login() cy.visit('url2') cy.get('.total-count-results').invoke('text') .then(text => counts = text) // set closure variable cy.get('.medium.col100 > .filterwrapper > input').type('Test Dummy',{force: true}) cy.get('.medium.col100 > .filterwrapper > input').type('{enter}') cy.get('.total-count-results').invoke('text') .then(new_counts => expect(new_counts).to.eq(counts)) // compare closure variable //.should("eq",counts) // alternative to .then clause }) })

Esto evita tener cláusulas '.then' anidadas, que pueden convertirse en un infierno de devolución de llamada, y es menos detallado.

(Consulte https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures para obtener información sobre los cierres: en resumen, "un cierre le da acceso al alcance de una función externa desde una función interna". El interior Las funciones aquí son las dos funciones .then : acceden a la variable de counts desde el alcance de it función exterior.)

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