Réponses:
Pour attendre , .equal
comparera les objets plutôt que leurs données, et dans votre cas, il s'agit de deux tableaux différents.
Utilisez .eql
pour comparer en profondeur les valeurs. Consultez ce lien .
Ou vous pouvez utiliser .deep.equal
pour 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 ).