كيف يمكنني استخدام اختبار بيرل :: Deep :: CMP_DEEPLY دون زيادة عدد الاختبار؟
سؤال
يبدو وكأنه Test::Deep
كان مستوحاة من is_deeply
. وبعد سؤالي هو كيف أفعل cmp_deeply
جزء من اختبار بدلا من اختبار بمفرده؟ لأن قائمة الاختبارات الخاصة بي فقط 8، ولكن في كل مرة أستخدمها cmp_deeply
, ، يعتبر اختبارا، مما يجعل عددي الفعلي من الاختبارات 11 (لأنني أسمي cmp_deeply
3 مرات) عندما يكون لدي فقط 8 وظائف. لا أريد زيادة عدد اختباراتي. هل هناك حل أكثر قابلية للتطبيق؟
المحلول
يجب عليك استخدامها eq_deeply
في حين أن:
هذا هو نفسه
cmp_deeply()
إلا أنه فقط إرجاع صحيح أو خطأ. لا ينشئ التشخيص ...
نصائح أخرى
هناك عدد من الأشياء التي يمكنك القيام بها، ولكن دون معرفة المزيد من التفاصيل في اختباراتك، من الصعب معرفة ما هو الأنسب:
لا تخطط لعدد محدد من الاختبارات.
use Test::More; all( cmp_deeply($got0, $expected0), cmp_deeply($got1, $expected1), cmp_deeply($got2, $expected2) ); # ... your other 7 tests done_testing(); # signals that we're all done.. exiting normally.
تحديد ديناميكيا عدد الاختبارات التي يجري تشغيلها، مما يجعل من المنطقي إذا كنت تختبر بعض الهيكل العميق والديناميكي الذي لا يعرف تعقيده (وعدد الاختبارات المطلوبة) مقدما:
use Test::More; use Test::Deep; # perhaps this is in some sort of loop? cmp_deeply($got0, $expected0); $numTests++; cmp_deeply($got1, $expected1); $numTests++; cmp_deeply($got2, $expected2); $numTests++; # ... your other 7 tests # TAP output must be either at the beginning or end of all output plan tests => $numTests + 7; # no more tests here! exit;