Tengo razones para probar, por ejemplo. [ { valueOf: ()=>0 } ] a [ 0 ] y quiero que la prueba tenga éxito.
La afirmación de nodo y las diversas assert de Chai parecen usar automáticamente la igualdad estricta cuando se realizan pruebas de igualdad profundas.
¿Hay un assert.deepEqual que no haga un assert.deepStrictEqual en alguna parte? ¿Un análogo profundo de assert.equal en lugar de assert.strictEqual ?
Muy bien, desarrollar la perspicacia: no se puede hacer en general.
deepEqual comparará "todas las propiedades de objetos enumerables propias y heredadas", y (supongo aquí) descenderá recursivamente en las propiedades del objeto hasta que encuentre valores primitivos.
No tiene por qué detenerse después del primer nivel (la matriz), cuando se encuentra con el segundo nivel (el objeto). El hecho de que mis datos realmente tengan la codificación en el nivel de Object es específico de mi caso de uso y no se puede asumir para el caso general.
Al llegar a valores primitivos para las propiedades , la igualdad generalmente puede ser útil no estricta.
El hecho de que un Object tenga una propiedad valueOf (que puede o no ser enumerable) no significa que deba tratarse como un primitivo en lugar de un Object . Muchas cosas tienen una propiedad valueOf .
La diferencia entre deepEqual e equal es que equal sabe que debe comparar dos primitivas (o referencias), y deepEqual nunca puede saberlo.
Estaba asumiendo demasiado y haciendo la pregunta equivocada. Lo siento SO.