Respostas:
Por esperar , .equal
comparará os objetos em vez dos dados e, no seu caso, são duas matrizes diferentes.
Use .eql
para comparar valores profundamente. Confira este link .
Ou você pode usar .deep.equal
para simular o mesmo que .eql
.
Ou no seu caso, você pode querer verificar .members
.
Para afirmações que você pode usar .deepEqual
, link .
to.deep.equal(['a','b'])
parece não funcionar. no entanto to.have.all.members(['a','b'])
faz. tão complicado ...
Tente usar o Igual profundo. Ele comparará matrizes aninhadas e Json aninhado.
expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
Por favor, consulte o site principal da documentação .
expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
É assim que se usa o chai para testar profundamente matrizes associativas.
Tive um problema ao tentar afirmar que duas matrizes associativas eram iguais. Eu sei que eles realmente não devem ser usados em javascript, mas eu estava escrevendo testes de unidade em torno do código legado que retorna uma referência a uma matriz associativa. :-)
Eu fiz isso definindo a variável como um objeto (não array) antes da minha chamada de função:
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 ).