آموزش استفاده از Laravel Dusk

Laravel Dusk یکی از ویژگی های جدید در لاراول 5.4 اضافه شد. Laravel Dusk یک ابزار برای تست نرم افزار (اسکریپت) است.

یکی از چالش هایی که در استفاده از PHPUnit وجود داشت اینه که شما نمی توانید نرم افزار با جاوا اسکریپت تست کنید برای مثال یک قسمت در سایت دارید که با کد جاوا اسکریپت اطلاعات فرم ارسال میشه و در callback اون به کاربر یک پیغام نمایش داده می شه شما با Laravel Dusk به راحتی می توانید تست های خود را انجام دهید.

زمانی که از Laravel Dusk برای آزمایش نرم افزار استفاده می کنید سایت در مرورگر باز میشه بنابراین به راحتی می توانید کدهای JavaScript داخل سایت را تست کنید.

چرا Dusk؟

در نسخه قبلی لاراول از BrowserKit برای عملیات تست استفاده می‌ کرد و محدودیت‌ های زیادی داشت اما در نسخه ۵٫۴ Dusk که قابلیت‌های بیشتری داره و عملیات تست رو طبیعی تر کرده استفاده میشه . یکی از ویژگی‌های جالبی که اضافه شده اینه که میتونه تا انجام شدن یک شرط در Front end منتظر بمونه مثلا میتونه منتظر بمونه تا یک کامپوننت جاوااسکریپت بارگزاری بشه و بعد ادامه تست رو انجام بده.

نصب و راه اندازی Laravel Dusk

برای شروع یک پروژه جدید با لاراول ایجاد می کنیم:

سپس به دایرکتوری laravel/dusk برید و پکیچ زیر را نصب کنید:

برای جلوگیری از وقوع یکسری مشکلات امنیتی با استفاده از کد زیر مشخص می کنیم که تست در حالت محلی انجام شود نه production:

در مرحله بعد کد زیر را اجرا کنید تا Dusk نصب شود:

این دستور یک دایرکتوری با نام Browser در داخل دایرکتوری tests می سازه و یک example ساده ایجاد می کنه.

همچنین فولدر screenshots در Browser  اضافه شده که هروقت تست شما منجر به خطا شد بصورت اتوماتیک یک عکس از محتوای نمایش داده شده در مرورگر شما میگیره و در این فولدر ذخیره میکنه.

خوب حالا نیاز دارید کلید APP_URL از فایل env. پروژه تون رو آپدیت کنید و Url پروژه رو بنویسید برای مثال http://localhost:8000

خب حالا دستور php artisan serve رو اجرا کنید.

اجرای تست مثال پیش فرض Dusk

برای اجرای تست دستور زیر را اجرا کنید:

اگر فایل tests\Browser\ExampleTest.php  رو باز کنید کدهای زیر رو می بینید:

همونطور که می بینید متد ()visit یک پارامتر ورودی برای آدرس Url داره و این آدرس رو باز می کنه جلوتر تابع ()assertSee رو داریم که چک میکنه متن ورودیش در مسیری که باز شده وجود داره یا خیر. دستورات و توابع بیشتر در این مورد رو اینجا پیدا می کنید !

در مثال بالا صفحه ی خانه پیمایش میشه و متن Laravel جستجو میشه .

RL8oreVSRj2gYclI5fAO_failure-testBasicExample-0.png (1034×655)

یک مثال ساده و کاربردی با Dusk

با Dusk میتونید با فرم ها و تایید هویت (Auth) رو هم تست کنید. خب حالا یک تست کوچک در این مورد انجام میدیم . برای شروع کدهای پیشفرض Auth لاراول رو صدا میزنیم. اول اطلاعات دیتابیستون رو در فایل env. تکمیل کنید و دستور زیر رو بزنید:

اگر از MariaDB استفاده میکنید یا ورژن Mysql پایین تر از ۵٫۷٫۷ هست فایل app\Providers\AppServiceProvider.php  رو به صورت زیر تغییر بدید:

حالا دستور php artisan migrate رو اجرا کنید .

 اگر وارد صفحه اصلی پروژه بشید صفحات Register و Login اضافه شده.

حالا با استفاده از دستور زیر یک تست جدید میسازیم:

وارد مسیر tests\Browser\RegisterTest.php بشید و تابع ()testExample رو بصورت زیر تغییر بدید :

حالا دستور php artisan dusk رو برای شروع تست اجرا کنید.مشاهده می کنید که  بصورت خودکار فرم ثبت نام مقدار دهی می شود و فرم submit می شود.

نویسنده مطلب
علی پامناری

دیدگاه کاربران

این وب سایت متعلق است به آذین وب (طراحی سایت در اصفهان) و تمامی حقوق آن محفوظ است.

طـبق ماده 12 فصل سوم قانون جرائم رایانه ای هرگونه کپی برداری از قالب پیگرد قانونی دارد.