Réponses:
Pour attendre , .equalcomparera les objets plutôt que leurs données, et dans votre cas, il s'agit de deux tableaux différents.
Utilisez .eqlpour comparer en profondeur les valeurs. Consultez ce lien .
Ou vous pouvez utiliser .deep.equalpour simuler la même chose que .eql.
Ou dans votre cas, vous voudrez peut-être vérifier .members .
Pour les assertions que vous pouvez utiliser .deepEqual, liez .
to.deep.equal(['a','b'])ne semble pas fonctionner. cependant to.have.all.members(['a','b']). si lourd…
Essayez d'utiliser Deep Equal. Il comparera les tableaux imbriqués ainsi que Json imbriqué.
expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
Veuillez vous référer au site de documentation principal .
expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
Voici comment utiliser chai pour tester en profondeur les tableaux associatifs.
J'ai eu un problème en essayant d'affirmer que deux tableaux associatifs étaient égaux. Je sais que ceux-ci ne devraient pas vraiment être utilisés en javascript mais j'écrivais des tests unitaires autour du code hérité qui renvoie une référence à un tableau associatif. :-)
Je l'ai fait en définissant la variable comme un objet (pas un tableau) avant mon appel de fonction:
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');
.deepEqual()( chaijs.com/api/assert ).