اذهب إلى المحتوى
  • 0

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

Osama Kha

السؤال

Recommended Posts

  • 0

ما تحاول القيام به هنا غير واضح جيدا. اذ يفترض من تابع الاختبار ان يعبر عن حالة استخدام واضحة وجلية. فلا نقول:

public function testUserProduct()

بل نقول:

public function test_user_can_create_a_product()

أو:

public function test_user_can_archive_a_product()

أو ما الى ذلك (بالطبع لا اقصد طريقة الكتابة).

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

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

بما أنك تقوم باختبار قواعد البيانات، فيفضل استعمال اتصال قاعدة بيانات in-memory مثل اتصال sqlite وذلك عن طريق الغاء تعليق الاسطر التالية في ملف phpunit.xml:

<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

شكرا لك اخي الكريم 

لو عدت الى الصورة المرفقة للمتحول $x هنا الاستعلام يعيد مصفوفة اكثر من عنصر 

 $this->assertDatabaseHas('courses', ['Course_name' => $x]);

هل يقبل عدة عناصر ؟عدة قيم

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 6 دقائق مضت قال Osama Kha:

شكرا لك اخي الكريم 

لو عدت الى الصورة المرفقة للمتحول $x هنا الاستعلام يعيد مصفوفة اكثر من عنصر 


 $this->assertDatabaseHas('courses', ['Course_name' => $x]);

هل يقبل عدة عناصر ؟عدة قيم

لا، 

لا يقبل التابع assertDatabaseMissing ولا التابع assertDatabaseHas مصفوفة متعددة الابعاد Multi-dimensional، يجب تمرير مصفوفة ثنائية البعد بالخصائص والقيم المراد استبعادها او البحث عنها فقط.

تم التعديل في بواسطة Adnane Kadri
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ منذ ساعة مضت قال Adnane Kadri:

لا، 

لا يقبل التابع assertDatabaseMissing ولا التابع assertDatabaseHas مصفوفة متعددة الابعاد Multi-dimensional، يجب تمرير مصفوفة بالخصائص والقيم المراد استبعادها او البحث عنها فقط.

هل يمكنك مساعدتي في ذلك 

x$ فيها كورس واحد ومع ذلك لا يقبل 

 Object of class stdClass could not be converted to string

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ الآن قال Osama Kha:

هل يمكنك مساعدتي في ذلك 

x$ فيها كورس واحد ومع ذلك لا يقبل 

 Object of class stdClass could not be converted to string

 

ما هي حالة الاستخدام التي تحاول اختبارها تحديدا؟ ما تحاول القيام به غير واضح اساسا.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

اريد اختبار وجود مادة ضمن database ام لا

بناء على idمعين

لا اعلم ان كان هذا الاختبار يعتبر صحيح لكن فقط المطلوب عملية testing ب ابسط الاشكال

ليس لدي الخبرة الكافية في عملية testing

تم التعديل في بواسطة Osama Kha
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 27 دقائق مضت قال Osama Kha:

اريد اختبار وجود مادة ضمن database ام لا

بناء على idمعين

لا اعلم ان كان هذا الاختبار يعتبر صحيح لكن فقط المطلوب عملية testing ب ابسط الاشكال

يمكنك استخدام ذات التابع السابق لعمل ذات الشيء.

$targetID = 'YOUR_ID';

$this->assertDatabaseMissing('courses' ,['id' => $targetID]);
بتاريخ 30 دقائق مضت قال Osama Kha:

ليس لدي الخبرة الكافية في عملية testing

ليست العملية معقدة كثيرا، نظم ذلك فقط. دورة الحياة داخل تابع الاختبار تكون دائما بشكل او بآخر كـ:

  1. مرحلة لتحضير البيانات
  2. مرحلة للقيام بأكشن والخروج بنتيجة
  3. مرحلة للقيام بالتوكيدات على اشياء او سلوكات معينة
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

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

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...