0Pricing
Lua Academy · درس

التوكيدات

عبّر عن السلوك المتوقع

التوكيدات درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.

وظيفة التأكيدات

التأكيد هو جوهر الاختبار. فهو يحدد حقيقة يجب أن تكون صحيحة. فإذا كانت كذلك، يستمر الاختبار. وإلا، يسجل busted فشلًا مع رسالة مفيدة.

يستخدم busted مكتبة luassert، التي يمكن الوصول إليها من خلال جدول assert العام.

assert.are.equal(4, 2 + 2)

are.equal

تتحقق assert.are.equal من التساوي باستخدام العامل ==. وتكون القيمة المتوقعة هي الوسيط الأول، بينما تكون القيمة الفعلية هي الوسيط الثاني.

يعمل ذلك مع الأعداد والسلاسل النصية والقيم المنطقية، لكنه يقارن هوية الجداول لا محتوياتها.

assert.are.equal("hello", greet())
assert.are.equal(10, count)

are.same للجداول

لمقارنة محتويات الجداول بعمق، استخدم assert.are.same. فهو يفحص تكراريًا ما إذا كان جدولان يحتويان على قيم متساوية.

استخدم same مع هياكل البيانات، وequal مع القيم البدائية أو للتحقق من الهوية.

assert.are.same({1, 2, 3}, split("1,2,3"))
assert.are.same({x = 1}, point)

الصوابية

يتحقق كل من assert.is_true وassert.is_false من القيم المنطقية المطابقة تمامًا. أما assert.is_truthy فيقبل أي قيمة ليست nil أو false.

اختر الصيغة الصارمة عندما تتوقع تحديدًا نتيجة منطقية.

assert.is_true(user.active)
assert.is_truthy(find("x"))
assert.is_false(list:isEmpty())

التحقق من nil

يتحقق assert.is_nil من أن القيمة هي nil، بينما يتحقق assert.is_not_nil من أنها موجودة. ويشيع استخدامهما عند التحقق من نتائج البحث.

وهما يوضحان القصد أكثر من المقارنة مع nil باستخدام equal.

assert.is_nil(map["missing"])
assert.is_not_nil(map["found"])

النفي باستخدام is_not

يمكن نفي معظم التأكيدات بإدراج is_not أو باستخدام الصيغة are_not. وهذا يعبّر عن أن شيئًا ما يجب أن يكون مختلفًا.

على سبيل المثال، ينجح assert.are_not.equal عندما تكون القيمتان مختلفتين.

assert.are_not.equal(1, 2)
assert.is_not_nil(result)

اختبار الأخطاء

للتأكد من أن الشيفرة ترفع خطأً، لفّها داخل دالة ومررها إلى assert.has_error. يستدعي busted الدالة ويتحقق من أنها رفعت خطأً.

يمكنك أيضًا التحقق من رسالة الخطأ بتمرير سلسلة نصية متوقعة باعتبارها الوسيط الثاني.

assert.has_error(function()
  withdraw(-5)
end, "amount must be positive")

has_no.errors

الفحص المقابل هو assert.has_no.errors. وينجح عندما تُنفَّذ الدالة المُغلَّفة من دون رفع خطأ.

يفيد ذلك في التأكد من أن الاستدعاء في المسار السليم لا يتعطل، حتى عندما لا تتحقق من القيمة التي يعيدها.

assert.has_no.errors(function()
  parse("valid input")
end)

رسائل فشل مخصصة

يمكنك إرفاق رسالة بمعظم التأكيدات لتوضيح أسباب الفشل. مررها باعتبارها وسيطًا إضافيًا حتى يشرح التقرير التوقع.

تحوّل الرسائل الواضحة الفشل الغامض إلى فشل يمكن اتخاذ إجراء حياله.

assert.is_true(ok, "login should succeed")

المطابقة باستخدام المعدِّلات

يوفر luassert معدِّلات ومطابقات لإجراء فحوص أكثر تعقيدًا. فعلى سبيل المثال، يختبر assert.matches سلسلة نصية مقابل نمط Lua.

يفيد ذلك عندما يكون فحص المساواة التامة صارمًا أكثر من اللازم بالنسبة إلى مخرجات متغيرة.

assert.matches("%d%d%d%d", get_year())
assert.matches("error", log_line, 1, true)

اختيار التأكيد المناسب

اختر التأكيد الأكثر تحديدًا لتوضيح القصد. استخدم same مع الجداول، وequal مع القيم البدائية، وhas_error مع حالات الفشل، وفحوص الصوابية مع القيم المنطقية.

تنتج التأكيدات المحددة رسائل فشل أفضل، مما يسرّع تصحيح الأخطاء.

describe("queue", function()
  it("dequeues in order", function()
    assert.are.same({"a", "b"}, q:drain())
  end)
end)

اختبار سريع

اختبر فهمك لتأكيدات busted.

مراجعة

يمنح luassert جدول assert في busted قدراته. استخدم are.equal مع القيم البدائية، وare.same للمقارنة العميقة بين الجداول، وفحوص الصوابية أو nil عند ملاءمتها.

اختبر حالات الفشل باستخدام has_error وحالات النجاح باستخدام has_no.errors. استخدم is_not للنفي، وأضف رسائل للحصول على تقارير أوضح.

الأسئلة الشائعة

هل درس «التوكيدات» مجاني؟

نعم — نص درس «التوكيدات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.

ماذا ستتعلم في «التوكيدات»؟

عبّر عن السلوك المتوقع تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟

لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «التوكيدات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟

نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. لماذا نختبر
  2. كتل describe وit
  3. التوكيدات
  4. Mocks وSpies
← العودة إلى Lua Academy