كيف يمكنني استخدام اختبار بيرل :: Deep :: CMP_DEEPLY دون زيادة عدد الاختبار؟

StackOverflow https://stackoverflow.com/questions/1274756

  •  16-09-2019
  •  | 
  •  

سؤال

يبدو وكأنه 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;
    
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top