تست نویسی در Laravel با Pest: راهنمای جامع

تست نویسی یکی از جنبه‌های مهم توسعه نرم‌افزار است که اطمینان از عملکرد صحیح برنامه را تضمین می‌کند. اگر از فریم‌ورک Laravel استفاده می‌کنید، ابزار Pest یک گزینه عالی برای ساده‌تر و خواناتر کردن فرآیند تست نویسی است. در این مقاله، به بررسی چگونگی استفاده از Pest برای نوشتن تست‌های قدرتمند در پروژه‌های لاراول می‌پردازیم.


Pest چیست؟

Pest یک ابزار تست نویسی مدرن و مینیمالیستی برای PHP است که به دلیل سینتکس ساده و خوانای خود شناخته می‌شود. هدف Pest، کاهش پیچیدگی تست‌ها و افزایش سرعت نوشتن آن‌هاست.

ویژگی‌های کلیدی Pest:

  • سینتکس ساده و مختصر: کدها خواناتر و کوتاه‌تر هستند.
  • توسعه‌پذیری بالا: امکان اضافه کردن پلاگین‌ها و توابع سفارشی وجود دارد.
  • یکپارچگی کامل با PHPUnit: اگر پیشتر از PHPUnit استفاده کرده‌اید، مهاجرت به Pest بسیار آسان خواهد بود.

نصب Pest در Laravel

پیش نیازها:

قبل از نصب، مطمئن شوید که پروژه Laravel شما به درستی راه‌اندازی شده است.

مراحل نصب:

  1. دستور زیر را اجرا کنید تا Pest را در پروژه نصب کنید:
    composer require pestphp/pest --dev --with-all-dependencies
    
  2. برای آماده‌سازی فایل‌های مورد نیاز، دستور زیر را اجرا کنید:
    php artisan pest:install
    
  3. حالا محیط تست نویسی شما آماده است!

اولین تست خود را با Pest بنویسید

فرض کنید قصد دارید عملکرد یک API ساده را آزمایش کنید.

  1. ابتدا یک فایل تست جدید ایجاد کنید:
    php artisan make:test ExampleTest --unit
    
  2. فایل ایجاد شده را باز کرده و محتوا را مشابه زیر تغییر دهید:
    it('can return a successful response', function () {
        $response = $this->get('/api/example');
        $response->assertStatus(200);
    });
    
  3. برای اجرای این تست، دستور زیر را اجرا کنید:
    ./vendor/bin/pest
    

اگر همه چیز درست باشد، باید نتیجه موفقیت‌آمیز دریافت کنید.


نکات پیشرفته برای کار با Pest در Laravel

۱. استفاده از توابع سفارشی (Custom Functions)

با تعریف توابع سفارشی می‌توانید کدهای تکراری خود را کاهش دهید. مثال:

test('user creation works correctly', function () {
    $user = User::factory()->create();
    expect($user->name)->toBeString();
});

۲. گروه‌بندی تست‌ها (Grouping)

pest امکان گروه‌بندی بر اساس تگ‌ها را فراهم می‌کند:

test('example test', function () {
    // ... your test code here ... 
})->group('api');

dستور اجرای گروه مشخص:

./vendor/bin/pest --group=api

نتیجه‌گیری

pest ابزاری قدرتمند برای ساده‌تر کردن فرآیند تست نویسی است که به ویژه برای توسعه‌دهندگان لاراول بسیار کاربردی است. اگر هنوز از PHPUnit استفاده می‌کنید یا تازه وارد دنیای تست نویسی شده‌اید، پیشنهاد می‌کنیم حتما pest را امتحان کنید.