الاختبار في مسار Ruby

تعلّم كيفية اختبار تمارين Ruby الخاصة بك على Exercism


تشغيل الاختبارات

نفّذ الاختبارات بالأمر التالي:

$ ruby hamming_test.rb

سيُنفَّذ الاختبار الأول فقط، أما بقية الاختبارات فقد جُعلت معلّقة باستخدام طريقة skip. احذف skip التالي أو اجعله تعليقًا كلما نجحت في اجتياز اختبار جديد.

فهم التخطي

تُخبر طريقة skip مجموعة الاختبارات بألا تشغّل اختبارًا معينًا. ويُستخدم هذا عادةً لتجنّب تشغيل اختبارات ميزات لم تُنفَّذ بعد، حتى تركّز على الجزء الذي تعمل عليه حاليًا.

سيعرض ملخّص تشغيل الاختبارات عدد الاختبارات المتخطاة. ويُستحسن أن تعطّل جميع عمليات التخطي قبل إكمال التمرين.

تخصيص تقارير الاختبارات

إذا أردت مخرجات ملوّنة، فنفّذ الاختبارات بالأمر التالي:

$ ruby hamming_test.rb -p

وإذا أردت رؤية أسماء الاختبارات، فنفّذ الاختبارات بالأمر التالي:

$ ruby hamming_tests.rb -v

وإذا أردت تشغيل اختبار واحد فقط، فيمكنك تحديد اختبار واحد أو مجموعة باستخدام مطابقة على نمط التعابير النمطية.

$ ruby hamming_tests.rb -n /empty/

ويمكنك أيضًا الجمع بين الخيارات.

تعطيل جميع عمليات التخطي

بعد أن اكتشفت قدرتك الجديدة على تحديد الاختبارات الفردية أو مجموعات الاختبارات التي تريد تشغيلها، قد ترغب في تعطيل جميع عمليات التخطي.

الأسلوب السريع والبدائي

باستغلال أن الطرق في Ruby قابلة لإعادة التعريف، إذا أضفت سطر الكود التالي:

def skip ; end

كهذا في ملف اختبار Hamming:

class HammingTest < Minitest::Test
  def skip ; end
  def test_identical_strands

فإن جميع عمليات التخطي ستظل تُقيَّم، لكن اختباراتك ستُشغَّل.

الأسلوب السريع والأنظف

بالطبع، قد يكون تعديل جميع الملفات مع مرور الوقت أمرًا مزعجًا، لذا يمكنك أن تفعل كما فعلنا عند تطوير التمارين: أنشئ ملفًا يحتوي على تعريف skip، ثم اطلبه كمكتبة عند الحاجة إليه.

أنشأنا مجلد lib لنحتفظ فيه بالأمور «المساعدة»، وهو يبدو هكذا:

require 'minitest/autorun'
# You can use this to disable all skips in the current exercise by issuing the
# following command:
#     ruby -I../lib -rdisable_skip <filename_test.rb>

module Minitest
  class Test
    def skip(_msg='', _bt=caller)
    end
  end
end

الوصف الخاص بكيفية استخدامه موجود في تعليقات الملف أعلاه، والملف معروض بكامل محتواه.