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

129
Vistas
Compruebe si una propiedad anidada tiene un objeto que coincide parcialmente con un objetivo esperado

Tengo un objeto como este:

 > const expect = require('chai').expect > r = { loadedElementData: { userIdRecord: { name: 'Chiara', surname: 'Fabbietti', id: 1 } }, resolvedIdParamsValues: { users: 1 }, resolvedListFilter: {}, totalLoads: 1 }

Puedo verificar si un objeto con contenido específico está en algún lugar profundo en r ; esto no arroja:

 > expect(r).to.have.nested.deep.property('loadedElementData.userIdRecord', { name: "Chiara", surname: "Fabbietti", id: 1 })

Sin embargo, quiero comprobar si hay objetos parciales . Por lo tanto, me gustaría que pasara algo como esto aunque el objeto de comparación sea una coincidencia parcial:

 > expect(r).to.have.nested.deep.property('loadedElementData.userIdRecord', { id: 1, name: 'Chiara' })

Obviamente, esto no funcionará, ya que verificará la igualdad profunda del objeto.

Esto en teoría debería funcionar:

 expect(r).to.nested.include({'loadedElementData.userIdRecord': { id: 1, name: 'Chiara' } })

Pero no. Esto REALMENTE debería funcionar:

 expect(r).to.deep.nested.include({ 'loadedElementData.userIdRecord': { id: 1, name: 'Chiara' } })

Pero no.

Puedo hacer que funcione comprobando UNA propiedad (solo 'id'):

 expect(r).to.nested.include({ 'loadedElementData.userIdRecord.id': 1})

Pero estoy limitado a verificar la id y no puedo verificar el name también al mismo tiempo.

Puedo hacer esto en 2 pasos:

 > expect(r).to.include.nested.property('loadedElementData.userIdRecord') > expect(r.loadedElementData.userIdRecord).to.include({ id: 1 })

Pero este es un proceso de dos pasos, ¿puedo hacerlo en un solo paso?

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

0

Si verifica sus problemas de Github, los mantenedores reconocen que la inclusión anidada de un subconjunto de objetos no funciona desde 2020. Referencia: chai Github

Esta es la línea donde Chai decide si hace una igualdad profunda o estricta al comparar dos objetos: https://github.com/chaijs/chai/blob/a8359d3d15779a23a7957a4c52539d48de2763e0/lib/chai/core/assertions.js#L1892 .
_.eql es una referencia a la implementación de la biblioteca propia de igualdad profunda de Chai.

En la librería deep-eql el flujo llegará a esta función que hace comparaciones de igualdad sueltas pero no parciales.

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