Ответы:
Для ожидать , .equalбудет сравнивать объекты , а не их данных, а в вашем случае это два разных массивов.
Используйте .eqlдля того, чтобы глубоко сравнить значения. Проверьте эту ссылку .
Или вы можете использовать .deep.equalдля того, чтобы имитировать так же, как .eql.
Или в вашем случае вы можете проверить .members .
Для утверждает , вы можете использовать .deepEqual, ссылку .
to.deep.equal(['a','b'])не похоже на работу. однако to.have.all.members(['a','b'])делает. так громоздко…
Попробуйте использовать глубокий Равный. Он будет сравнивать как вложенные массивы, так и вложенные Json.
expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
Пожалуйста, обратитесь к основной документации сайта .
expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
Это как использовать Chai для глубокого тестирования ассоциативных массивов.
У меня была проблема, пытающаяся утверждать, что два ассоциативных массива были равны. Я знаю, что их не следует использовать в javascript, но я писал модульные тесты на основе унаследованного кода, который возвращает ссылку на ассоциативный массив. :-)
Я сделал это, определив переменную как объект (не массив) до вызова моей функции:
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 ).