node.js - matriz - chai prueba de igualdad de matrices no funciona como se esperaba
math js download (4)
¿Por qué falla lo siguiente?
expect([0,0]).to.equal([0,0]);
¿Y cuál es la manera correcta de probar eso?
Además, to.eql
evitará un error igual de profundo causado por to.eq
cuando los datos son exactamente iguales, por ejemplo, la afirmación como esta:
AssertionError: expected { Object (_thing, id) } to equal { Object (_thing, id) }
Esta es la forma de usar chai para probar profundamente matrices asociativas.
Tuve un problema al tratar de afirmar que dos matrices asociativas eran iguales. Sé que no deberían usarse en javascript, pero estaba escribiendo pruebas unitarias en torno a un código heredado que devuelve una referencia a una matriz asociativa. :-)
Lo hice definiendo la variable como un objeto (no una matriz) antes de mi llamada de función:
var myAssocArray = {}; // not []
var expectedAssocArray = {}; // not []
expectedAssocArray[''myKey''] = ''something'';
expectedAssocArray[''differentKey''] = ''something else'';
// legacy function which returns associate array reference
myFunction(myAssocArray);
assert.deepEqual(myAssocArray, expectedAssocArray,''compare two associative arrays'');
Para esperar , .equal
comparará objetos en lugar de sus datos, y en su caso son dos matrices diferentes.
Use .eql
para comparar profundamente los valores. Echa un vistazo a este link .
O puedes usar .deep.equal
para simular lo mismo que .eql
.
O en su caso, puede que desee check .members
.
Para las .deepEqual
puede utilizar .deepEqual
, link .
Trate de usar Deep Equal. Comparará matrices anidadas así como Json anidadas.
expect({ foo: ''bar'' }).to.deep.equal({ foo: ''bar'' });
Por favor, consulte el sitio de documentación principal .