تست کردن API در لاراول

ترجمه و تالیف : رضا جمال زاده
تاریخ انتشار : 20 آذر 98
خواندن در 2 دقیقه
دسته بندی ها : لاراول

یکی از بخش‌های اصلی از فرایند تولید یک اپلیکیشن تست کردن است به خصوص اگر شما از روش TDD برای تست استفاده می‌کنید. برای عمل تست شما باید تست‌های واقعی و کارآمدی بنویسید که زمینه‌های مختلفی را در برمی‌گیرد و مسیر توسعه شما را به سمت راه درست سوق می‌دهد. توجه کنید که تست API با لاراول هرگز کار ساده ای نخواهد بود.

تست کردن API در لاراول

تنظیم تست

 در اینجا ما از phpUnit برای عمل تست استفاده می‌کنیم. در پوشه‌ی root اپلیکیشن ما یک فایل phpunit.xml قرار دارد که ما می‌توانیم به وسیله آن مجموعه آزمون‌های خود را پیکربندی کنیم. شما می‌توانید یک محیط متفاوت برای تست‌های خود تنظیم کنید. این کار می‌تواند برای سناریوهای مختلف خیلی مفید باشد. تا اینجای کار ما هیچ چیزی را تغییر و یا مشخص نکردیم، همه چیز در حالت اولیه خود قرار دارد.

تست‌های ویژه و واحد

ما می‌توانیم تست‌ها را به دو بخش تقسیم کنیم. برای سطح پایین‌تر، ما از تست‌های واحد(Unit Tests) استفاده می‌کنیم و برای تست "ماژول" از تست‌های ویژه استفاده می‌کنیم. در سطح واحد ما همه روابط در مدل‌ها و اتصالات مشابه بین قسمت‌های مختلف برنامه را چک می‌کنیم. در تست‌های ویژه، ما به یک لایه بالاتر نگاهی می‌اندازیم و کامپوننت ها و یا ماژول‌ها که قطعات بزرگتری هستند را بررسی می‌کنیم.

ما می‌توانیم تست‌های خود را با اجرای دستور php artisan make:test NewTest  در ترمینال ایجاد کنیم. به صورت پیش‌فرض این دستور یک تست ویژه تولید می‌کند، اما با اضافه کردن –unit آن را به تست واحد تبدیل می‌کنیم.

تست کردن لایه‌ی HTTP

تست کردن لایه HTTP معمولاً در سطح ویژه انجام می‌شود. بخصوص اگر ما APIهای JSON را بخواهیم تست کنیم. برای انجام این کار ما باید چیزهای زیادی را آماده کنیم، مانند لاگین کردن یک کاربر یا ایجاد چند ماژول با استفاده از ماژول فکتوری. موارد گفته شده اغلب هنگامی که ما می‌خواهیم تست خود را در سطح ویژه اجرا کنیم پیشنهاد می‌شوند.

فرض کنید که ما یک API را به کاربر ارائه می‌دهیم تا با استفاده از آن داده‌های خود را دریافت کند، ما می‌توانیم یک تست برای این مورد ایجاد کنیم:

<?php

namespace Tests\Feature\Api;

use App\User;
use Tests\TestCase;
use Illuminate\Foundation\Testing\DatabaseMigrations;

class UserFeatureTest extends TestCase
{
    use DatabaseMigrations;

    /** @test */
    public function a_user_can_view_its_profile()
    {
        $user = factory(User::class)->create();

        $this->actingAs($user, 'api')
            ->get('/api/user/profile')
            ->assertStatus(200)
            ->assertJson($user->toArrray());
}

در ادامه به توضیح مراحل مختلف این تست می‌پردازیم:

 ۱-اول از همه ما یک کاربر با استفاده از تابع کمکی factory() ایجاد می‌کنیم

 ۲-با استفاده از متد actingAs() ما می‌توانیم یک کاربر را وارد کنید، با قرار دادن پارامتر api ما کاربر مورد نظر را در سمت API احراز هویت می‌کنیم

۳-پس از آن ما یک درخواست از نوع GET ایجاد می‌کنیم

۴-از کد وضعیت ۲۰۰ استفاده می‌کنیم، این کد بدین معناست که همه چیز درست و به عبارتی همه چیز OK است

5- APIما از نوع JSON API است بنابراین ما انتظار داریم که مدل کاربر ما را به JSON تبدیل کند.

اجرای تست

ما می‌توانیم تست‌های خود را با نوشتن عبارت vendor/bin/phpunit در ترمینال خود اجرا کنیم. علاوه بر این، ما می‌توانیم تست‌های خود را برای اجرای فقط یک تست خاص یا یک کلاس تست فیلتر کنیم. برای فیلتر کردن ما می‌توانیم تگ –filter را به دستور خود اضافه کنیم.

 در مقاله بالا روش انجام یک تست ساده برای APIها به سادگی توضیح داده شد. برای کسب اطلاعات بیشتر در مورد تست و تست نویسی شما می‌توانید از این دوره و همچنین سایر مقالات موجود در سایت راکت استفاده کنید.

منبع

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید