Равномерность набора тестов chai не работает должным образом

Почему происходит следующее:

expect([0,0]).to.equal([0,0]);

и каков правильный способ проверить это?

Ответ 1

Для ожидать, .equal будет сравнивать объекты, а не их данные, а в вашем случае это два разных массива.

Используйте .eql для глубокого сравнения значений. Ознакомьтесь с этой ссылкой .
Или вы можете использовать .deep.equal, чтобы имитировать то же самое, что и .eql.
Или в вашем случае вы можете проверить .members.

Для утверждений вы можете использовать ссылку .deepEqual, .

Ответ 2

Попробуйте использовать Deep Equal. Он будет сравнивать вложенные массивы, а также вложенный Json.

expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });

Обратитесь к основному сайту документации.

Ответ 3

Вот как использовать 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');