Tengo un caso de prueba que quiere afirmar que el documento mangosta devuelto por el método bajo prueba es el mismo que ya tengo. Para verificar que sean iguales, mi intención es simplemente verificar que tengan la misma propiedad _id .
const expected = MyModel.find(/*...*/); const actual = await foo(); // method under test expect(actual._id).to.deep.equal(expected._id) Sin embargo, descubrí que la verificación deep.equal pasa incluso cuando los _id de los documentos no son los mismos .
Reproduje el problema en este pequeño ejemplo:
import { expect } from 'chai'; import { Types } from 'mongoose'; const a = new Types.ObjectId(); const b = new Types.ObjectId(); expect(a).to.deep.equal(b); // unexpectedly passesHe verificado que puedo solucionar el problema comparando la representación de cadena de cada ObjectId en su lugar:
expect(a.toString()).equals(b.toString()); // fails (as expected)¿Por qué chai afirma incorrectamente que los dos ObjectId, que son instancias de objetos diferentes con valores diferentes, son profundamente iguales en el ejemplo original?