Равномерность набора тестов 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');