Відповіді:
Для очікувати , .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 ).