Laravel Desk یکی از بهترین ویژگیهایی هست که در لاراول 5٫4 معرفی شده. این ابزار برای تست اپلیکیشن لاراول کاربرد داره.
یکی از بزرگترین مشکلاتی که در PHPUnit وجود داشت این بود که تست نرمافزارهای برپایه JavaScript غیرممکن بود. با Dusk میتونید براحتی ویژگیهای Client-side مثل جاوااسکریپت رو هم تست کنید.
در این مقاله ما میخوایم Dusk رو در لاراول پوشش بدیم و چند تست کوچک براش انجام بدیم.
چرا Dusk ؟
سابقاً لاراول از BrowserKit برای عملیات تست استفاده میکرد و محدودیتهای زیادی داشت اما در نسخه 5٫4 Dusk که قابلیتهای بیشتری داره و عملیات تست رو طبیعی تر کرده استفاده میشه . یکی از ویژگیهای جالبی که اضافه شده آینه که میتونه تا انجام شدن یک شرط در Front end منتظر بمونه مثلا میتونه منتظر بمونه تا یک کامپوننت جاوااسکریپت بارگزاری بشه و بعد ادامه تست رو انجام بده.
نصب و راه اندازی
برای شروع یک پروژه لاراولی بسازید و دستور زیر رو وارد کنید تا پکیج نصب بشه :
composer require laravel/dusk
برای جلوگیری از وقوع یکسری مشکلات با استفاده از کد زیر مشخص میکنیم که تست درحالت محلی انجام شود نه production .
کدهای زیر رو در فایل app\Providers\AppServiceProvider.php وارد کنید :
use Laravel\Dusk\DuskServiceProvider;// Importing DuskServiceProvider class
...
public function register()
{
if ($this->app->environment('local', 'testing')) {
$this->app->register(DuskServiceProvider::class);
}
}
حالا برای نصب Dusk دستور زیر رو بزنید :
php artisan dusk:install
این دستور مسیر Browser رو در فولدر تست پروژه شما اضافه می کنه و شامل یک فایل تست کوچک هم میشه. همچنین فولدر screenshots اضافه شده که هروقت تست شما منجر به خطا شد بصورت اتوماتیک یک عکس از اسکرین شما میگیره و در این فولدر ذخیره میکنه.
حالا نیاز دارید کلید APP_URL از فایل env. پروژه تون رو آپدیت کنید و Url پروژه رو بنویسید برای مثال http://localhost
خب حالا دستور php artisan serve رو وارد کنید.
اجرای تست
برای اجرای تست دستور php artisan dusk رو بزنید. این دستور درحال حاضر تست ExampleTest رو در مسیر tests\Browser\ExampleTest.php اجرا می کنه که یه چیزی شبیه این میشه :
این نشون میده تست موفق بوده و متن OK 1 test, 1 assertion نمایش داده میشه.
اگر فایل tests\Browser\ExampleTest.php رو باز کنید متد زیر رو می بینید :
...
public function testBasicExample()
{
//Visit the homepage and look for the text 'Laravel'
$this->browse(function (Browser $browser) {
$browser->visit('/')
->assertSee('Laravel');
});
}
همونطور که می بینید متد ()visit یک پارامتر ورودی برای آدرس Url داره و این آدرس رو پیمایش می کنه جلوتر تابع ()assertSee رو داریم که چک میکنه متن ورودیش در مسیر پیمایش وجود داره یا خیر. دستورات و توابع بیشتر در این مورد رو اینجا پیدا می کنید !
در مثال بالا صفحه ی خانه پیمایش میشه و متن Laravel جستجو میشه . حالا فرض کنیم این متن در صفحه وجود نداره , صفحه زیر نمایش داده میشه :
الان میتونید یه اسکرین شات هم از خطا در مسیر tests\Browser\screenshots پیدا کنید.
فرم ها و تایید هویت
با Dusk میتونید با فرم ها و تایید هویت (Auth) رو هم تست کنید. خب حالا یک تست کوچک در این مورد انجام میدیم . برای شروع کدهای پیشفرض Auth لاراول رو صدا میزنیم. اول اطلاعات دیتابیستون رو در فایل env. تکمیل کنید و دستور زیر رو بزنید :
php artisan make:auth
اگر از MariaDB استفاده میکنید یا ورژن Mysql پایین تر از 5٫7٫7 هست فایل app\Providers\AppServiceProvider.php رو به صورت زیر تغییر بدید :
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
حالا دستور php artisan migrate رو اجرا کنید .
اگر وارد صفحه اصلی پروژه بشید صفحات Register و Login اضافه شده.
حالا با استفاده از دستور زیر یک تست جدید میسازیم.
php artisan dusk:make RegisterTest
وارد مسیر tests\Browser\RegisterTest.php بشید و تابع ()testExample رو بصورت زیر تغییر بدید :
public function testExample()
{
$this->browse(function ($browser) {
$browser->visit('/') //Go to the homepage
->clickLink('Register') //Click the Register link
->assertSee('Register') //Make sure the phrase in the arguement is on the page
//Fill the form with these values
->value('#name', 'Joe')
->value('#email', 'joe@example.com')
->value('#password', '123456')
->value('#password-confirm', '123456')
->click('button[type="submit"]') //Click the submit button on the page
->assertPathIs('/home') //Make sure you are in the home page
//Make sure you see the phrase in the arguement
->assertSee("You are logged in!");
});
}
در ضمن میتونید فایل ExampleTest.php رو هم که بی استفاده هست حذف کنید.
حالا دستور php artisan dusk رو برای شروع تست وارد کنید.مشاهده می کنید که بصورت زیر در میاد :
همینطور که نتایج کار رو مشاهده کردید این ابزار جدید بسیار کارآمد است و میتونید در بخش های مختلف ازش استفاده کنید.
در دوره آموزش ساخت یک وبسایت آموزشی (فروشگاهی) با لاراول میتوانید بصورت کامل تری کار با این ابزار رو یاد بگیرید
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید