276 votes

l'égalité des tableaux de test chai ne fonctionne pas comme prévu

Pourquoi l'opération suivante échoue-t-elle ?

expect([0,0]).to.equal([0,0]);

et quelle est la bonne façon de tester cela ?

416voto

moka Points 6143

Pour s'attendre à , .equal comparera les objets plutôt que leurs données, et dans votre cas, il s'agit de deux tableaux différents.

Utilice .eql afin de comparer en profondeur les valeurs. Consultez cette lien .
Ou vous pouvez utiliser .deep.equal afin de simuler la même chose que .eql .
Ou dans votre cas, vous pourriez vouloir vérifier .members .

Pour affirme vous pouvez utiliser .deepEqual , lien .

74voto

meet mehta Points 402

Essayez d'utiliser l'Equal profond. Il comparera des tableaux imbriqués ainsi que des Json imbriqués.

expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });

Veuillez vous référer à site de documentation principal .

3voto

jayjfadd Points 71

Pour une égalité profonde non ordonnée, utilisez membres

expect([1,2,3]).to.have.members([3,2,1]); // passes expect([1,2,3]).to.have.members([1,2,3]); // passes expect([1,2,3]).to.eql([3,2,1]); // fails

source

1voto

张健健 Points 708
import chai from 'chai';
const arr1 = [2, 1];
const arr2 = [2, 1];
chai.expect(arr1).to.eql(arr2); // Will pass. `eql` is data compare instead of object compare.

0voto

Dmitry Grinko Points 1900

Vous pouvez utiliser .deepEqual()

const { assert } = require('chai');

assert.deepEqual([0,0], [0,0]);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X