Risposte:
Per aspettarsi , .equal
confronterà gli oggetti anziché i loro dati, e nel tuo caso si tratta di due matrici diverse.
Utilizzare .eql
per confrontare profondamente i valori. Dai un'occhiata a questo link .
Oppure potresti usare .deep.equal
per simulare lo stesso di .eql
.
O nel tuo caso potresti voler controllare .members
.
Per affermazioni che puoi usare .deepEqual
, link .
to.deep.equal(['a','b'])
non sembra funzionare. tuttavia lo to.have.all.members(['a','b'])
fa. così ingombrante ...
Prova a usare deep Equal. Confronterà le matrici nidificate e la Json nidificata.
expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
Fare riferimento al sito di documentazione principale .
expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
Ecco come usare il chai per testare in modo approfondito le matrici associative.
Ho avuto un problema cercando di affermare che due array associativi erano uguali. So che questi non dovrebbero davvero essere usati in JavaScript ma stavo scrivendo unit test attorno al codice legacy che restituisce un riferimento a un array associativo. :-)
L'ho fatto definendo la variabile come oggetto (non array) prima della mia chiamata di funzione:
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 ).