Antworten:
Für erwarten , .equal
werden Objekte vergleichen , anstatt ihre Daten, und in Ihrem Fall ist es zwei verschiedene Arrays.
Verwenden Sie .eql
diese Option, um Werte gründlich zu vergleichen. Schauen Sie sich diesen Link an .
Oder Sie könnten verwenden .deep.equal
, um das gleiche zu simulieren wie .eql
.
Oder in Ihrem Fall möchten Sie vielleicht überprüfen .members
.
Für Asserts, die Sie verwenden können .deepEqual
, verlinken Sie .
to.deep.equal(['a','b'])
scheint nicht zu funktionieren. to.have.all.members(['a','b'])
tut es jedoch. so umständlich ...
Versuchen Sie, Deep Equal zu verwenden. Es werden sowohl verschachtelte Arrays als auch verschachtelte Json verglichen.
expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
Bitte beziehen Sie sich auf die Hauptdokumentationsseite .
expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
So verwenden Sie Chai, um assoziative Arrays gründlich zu testen.
Ich hatte ein Problem beim Versuch zu behaupten, dass zwei assoziative Arrays gleich waren. Ich weiß, dass diese nicht wirklich in Javascript verwendet werden sollten, aber ich habe Unit-Tests um Legacy-Code geschrieben, der einen Verweis auf ein assoziatives Array zurückgibt. :-)
Ich habe die Variable vor meinem Funktionsaufruf als Objekt (nicht als Array) definiert:
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 ).