Равномерность набора тестов chai не работает должным образом
Почему происходит следующее:
expect([0,0]).to.equal([0,0]);
и каков правильный способ проверить это?
Ответ 1
Для ожидать, .equal будет сравнивать объекты, а не их данные, а в вашем случае это два разных массива.
Используйте .eql для глубокого сравнения значений. Ознакомьтесь с этой ссылкой .
Или вы можете использовать .deep.equal, чтобы имитировать то же самое, что и .eql.
Или в вашем случае вы можете проверить.members.
Для утверждений вы можете использовать ссылку .deepEqual, .
Ответ 2
Попробуйте использовать Deep Equal. Он будет сравнивать вложенные массивы, а также вложенный Json.
Вот как использовать 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');