تكرار السؤال: …
الإجابة المختصرة
باستخدام دوال المحاكاة المدمجة مثل Event::fake() أو Queue::fake() أو Mail::fake()، وتوكيد الإرسال بـ Mail::assertSent().
الشرح
في بيئة الاختبارات، لا تريد إرسال إيميل حقيقي لمستخدم أو خصم بطاقة ائتمان حقيقية. يوفر Laravel أدوات faking مدمجة للـ Facades الأساسية تعترض العمليات في الذاكرة وتسجل ما حدث، مما يسمح لك بالتأكد من أن الكود حاول إرسال الإيميل المطلوب بالبيانات الصحيحة دون أي تأثير خارجي فعلي.
مثال بالكود
public function test_orders_trigger_mail(): void {
Mail::fake();
// تنفيذ عملية الشراء
$this->postJson('/api/orders', $data);
// التوكيد
Mail::assertSent(OrderConfirmationMail::class);
}أخطاء شائعة
- استدعاء Mail::fake() بعد تنفيذ الكود بدلاً من استدعائها قبله.
أسئلة متابعة
- كيف تختبر الكود الذي يستدعي واجهات خارجية باستخدام Http::fake ومنع الطلبات الحقيقية؟
- كيف تعمل الإشعارات متعددة القنوات (Notifications) في Laravel وكيف تختبرها بـ Notification::fake()؟