🚀 آموزش تست APIها با Laravel Dusk
Laravel Dusk ابزاری برای تست خودکار صفحات وب در محیط مرورگر واقعی (با استفاده از ChromeDriver) است. اما میتونیم ازش برای تست APIها هم استفاده کنیم، بهویژه زمانی که API در قالب UI یا فرمها فراخوانی میشه.
✅ 1. نصب Laravel Dusk
✅ 2. ساخت اولین تست Dusk
این فایل در مسیر زیر ساخته میشه:
🧪 3. شبیهسازی درخواست API با فرم یا JavaScript
اگه API شما از طریق یک فرم HTML یا دکمه با AJAX فراخوانی میشه، میتونی با Dusk همون رفتار رو شبیهسازی کنی.
مثال: تست API لاگین
فرض کن یک دکمه در صفحه لاگین داریم که به /api/login درخواست POST میفرسته:
🔎 این روش برای تست APIهایی که از طریق مرورگر فرستاده میشن (فرم یا JavaScript) بسیار کاربردیه.
⚠️ اگر API صرفاً JSON پاسخ میده چطور؟
Dusk برای این سناریو مناسب نیست چون مرورگر UI محور هست. بهتره از Laravel HTTP Test استفاده کنی:
📌 برای این نوع تستها بهتره از تستهای معمول Feature یا API استفاده کنی، نه Dusk.
💡 نکات مفید
| نکته | توضیح |
|---|---|
| اجرای تست | php artisan dusk |
| اجرای فقط یک تست | php artisan dusk tests/Browser/ApiTest.php |
| مشاهده مرورگر | در تستهای شکست خورده، Dusk اسکرینشات میگیره |
| پاکسازی دادهها | از DatabaseMigrations در تستها استفاده کن |
🧰 ترکیب Dusk با Mock API (Fake API)
اگر میخوای بدون زدن درخواست واقعی API رو تست کنی، میتونی از کتابخونههایی مثل Mock Service Worker استفاده کنی تا پاسخ API رو فیکسازی کنی داخل مرورگر.
📦 جمعبندی
| سناریو | ابزار مناسب |
|---|---|
| تست API با فرم | ✅ Laravel Dusk |
| تست API صرفاً JSON | ✅ Feature Test (postJson) |
| تست کلاینت JavaScript | ✅ Dusk + JavaScript |
| شبیهسازی مرورگر واقعی | ✅ فقط با Dusk ممکنه |
✅ تست کامل Dusk برای API ورود و CRUD در لاراول
🔧 پیشنیاز:
فرض میگیریم:
-
مسیر ورود
/login -
مسیر لیست پستها
/posts -
فرم ایجاد پست، ورودیهایی به نام
titleوbodyداره. -
فرم و عملیاتها از طریق رابط گرافیکی HTML انجام میشن (نه صرفاً API خام).
🧪 ساخت تست:
✍️ محتوای فایل tests/Browser/PostCrudTest.php
🧩 نکته: استفاده از Dusk Selectors در HTML
در HTML باید المانهایی که قراره Dusk پیدا کنه، Selector داشته باشن:
✅ اجرای تست
یا فقط تست خاص:
📦 خلاصه عملیات تست شده:
| عملیات | با چه چیزی تست شد؟ |
|---|---|
| ورود | فرم لاگین با Dusk |
| ایجاد پست | پر کردن فرم و ارسال |
| ویرایش پست | کلیک روی لینک و بروزرسانی فرم |
| حذف پست | کلیک روی دکمه حذف و بررسی تغییرات |