it-swarm.dev

تشاي مجموعة اختبار المساواة لا يعمل

لماذا يفشل ما يلي؟

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

وما هي الطريقة الصحيحة لاختبار ذلك؟

212
kannix

بالنسبة لـ تتوقع ، سوف يقارن .equal الكائنات بدلاً من بياناتهم ، وفي حالتين ، هناك صفيفان مختلفان.

استخدم .eql لمقارنة القيم بعمق. تحقق من هذا الرابط .
أو يمكنك استخدام .deep.equal لمحاكاة نفس .eql.
أو في حالتك قد ترغب في التحقق.members.

بالنسبة لـ التأكيدات يمكنك استخدام .deepEqual ، link .

329
moka

محاولة استخدام عميق المساواة. سيتم مقارنة صفائف المتداخلة وكذلك المتداخلة Json.

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

يرجى الرجوع إلى موقع التوثيق الرئيسي .

56
Meet Mehta

بالإضافة إلى ذلك ، سوف يتجنب to.eql حدوث خطأ مساوٍ عميق بسبب to.eq عندما تكون البيانات هي نفسها تمامًا ، على سبيل المثال التأكيد مثل هذا:

AssertionError: expected { Object (_thing, id) } to equal { Object (_thing, id) }

1
Tanja Stroble

هذه هي كيفية استخدام تشاي لاختبار عميق للصفائف الترابطية.

واجهت مشكلة في محاولة التأكيد على أن اثنين النقابي المصفوفات كانت متساوية. أعلم أنه لا يجب استخدام هذه في جافا سكريبت ، لكنني كنت أكتب اختبارات الوحدة حول الكود القديم الذي يشير إلى مجموعة مصاحبة. :-)

لقد قمت بذلك عن طريق تعريف المتغير ككائن (وليس صفيف) قبل استدعاء دالة:

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');
0
GreensterRox