• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

306
Views
La comparación profunda igual no funciona en Cypress 9.7.0

Actualicé mi cypress a la versión 9.7.0 y ahora mismo tengo un problema con deep equal . Cuando escribí la línea de prueba de código:

 expect([1,2,3]).to.deep.equal([1,2,3]);

ingrese la descripción de la imagen aquí

Todo funciona correctamente.

Mientras estoy probando la tienda redux, recibí un error que se ve

Se agotó el tiempo de reintento después de 4000 ms: se esperaba que [Array(2)] fuera profundamente igual a [Array(2)]

ingrese la descripción de la imagen aquí

Las matrices en la vista previa de la consola de devtool son las mismas... Lo he intentado de dos maneras para escribir la prueba. También lo combiné con asíncrono y tiempos de espera.

Primer intento:

 it('Example redux check', () => { cy.fixture('file.json').then((fixtures) => { cy.window() .its('store') .invoke('getState') .its('queue.queueItems').should('deep.equal', fixtures.store.queue.queueItems); }); });

Segundo intento

 it('Example redux check', () => { cy.fixture('file.json').then((fixtures) => { const getQueueItems = (win) => { return win.store.getState().queue.queueItems; } cy.window() .pipe(getQueueItems) .should('deep.equal', fixtures.store.queue.queueItems); }); });

¿Alguien tuvo un problema similar o idea de cómo evitar ese tiempo de espera? Sucede exactamente lo mismo al comparar cargas útiles asíncronas...

about 3 years ago · Juan Pablo Isaza
3 answers
Answer question

0

No me puedo quejar de la afirmación deep.equal en Cypress v9.7.0, incluso de matrices y objetos profundamente anidados, excepto cuando el orden difiere.

Si su problema es la diferencia en el orden de la matriz, intente agregar el paquete deepEqualInAnyOrder

 const deepEqualInAnyOrder = require('deep-equal-in-any-order'); chai.use(deepEqualInAnyOrder); it('matches when ordering is different', () => { const expected = [{a:{x:1}}, {b:2},{c:3}]; expect([{a:{x:1}}, {b:2}, {c:3}]).to.deep.equal(expected) // passes expect([{b:2}, {a:{x:1}}, {c:3}]).to.deep.equal(expected) // fails expect([{b:2}, {a:{x:1}}, {c:3}]).to.deep.equalInAnyOrder(expected) // passes });
about 3 years ago · Juan Pablo Isaza Report

0

También quería ver si deep.equal en el elemento <h1> de http://example.com tendría éxito.

Aquí está mi ejemplo mínimo y reproducible.

 // Cypress 9.7.0 it('passes deep-equal of two DOM objects', () => { cy.visit('http://example.com') cy.get('h1').then($el1 => { // get h1 1st time cy.get('h1').then($el2 => { // get another copy // Are they different objects? expect($el1).to.not.equal($el2) // pass expect($el1 === $el2).to.equal(false) // pass // Do they deep-equal expect($el1).to.deep.equal($el2) // pass }) }) })

ingrese la descripción de la imagen aquí

about 3 years ago · Juan Pablo Isaza Report

0

Casi todas las interfaces que uso tienen Cypress, incluidas algunas de código abierto.

Está relacionado con algunos problemas abiertos en GitHub y afecta a las últimas versiones de Cypress.

https://github.com/cypress-io/cypress/issues/21353

https://github.com/cypress-io/cypress/issues/21469

Esto es lo que obtengo en un WIP después de actualizar algunas pruebas que usan deep.equal :

Error con igualdad profunda

Su primer ejemplo parece más estándar.

Recomiendo bajar a una versión inferior. La siguiente versión funcionó para mí antes de la actualización:

9.5.4

about 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error