Ответы:
Для ожидать , .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 ).