آموزش قدم به قدم فریم ورک لاراول- قسمت هفتم

 بازدید: 229
 تاریخ انتشار: ۱۴ خرداد، ۱۳۹۷، ۶:۰۰ ق.ظ
آموزش قدم به قدم فریم ورک لاراول- قسمت هفتم
در بخش های قبلی این مقاله قدم به قدم آموزش ساخت یک دایرکتوری لینک را با استفاده از فریم ورک لاراول یاد گرفتیم تا با استفاده از این مثال کاربردی با آموزش فریم ورک لاراول آشنا شده باشیم و قابلیت‌های این فریم ورک ساخت اپلیکیشن وب را بیاموزیم. در مرحله آخر گفتیم که باید کار انجام شده را در 5 مرحله ارزیابی کنیم و ببینیم مطابق انتظار کار می کند یا خیر، یکی از مهمترین مراحل ارزیابی تست نحوه پاسخگویی اپلیکیشن به لینک های معتبر یا نامعتبر است.

ارزیابی ذخیره شدن لینک با استفاده از فریم ورک laravel

اول از همه باید مطمئن شویم لینک های درست ذخیره می شوند:
<?php

namespace Tests\Feature;

use Illuminate\Validation\ValidationException;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

class SubmitLinksTest extends TestCase
{
    use RefreshDatabase;

    /** @test */
    function guest_can_submit_a_new_link()
    {
        $response = $this->post('/submit', [
            'title' => 'Example Title',
            'url' => 'http://example.com',
            'description' => 'Example description.',
        ]);

        $this->assertDatabaseHas('links', [
            'title' => 'Example Title'
        ]);

        $response
            ->assertStatus(302)
            ->assertHeader('Location', url('/'));

        $this
            ->get('/')
            ->assertSee('Example Title');
    }
}
توجه کنید که مشخصه RefreshDatabase اطمینان حاصل می کند که هر تست یک پایگاه داده جدید دارد تا برای هر تست یک محیط دیتابیس تازه با همه مهاجرت‌ها ایجاد کند.
تست اول ما داده‌های پست معتبر را ارسال می‌کند که یک هدف پاسخ را باز می گرداند تا اطمینان بدست آوریم مسیر پاسخ طوری است که انتظار داریم. سپس بررسی می کنیم پایگاه داده حاوی یک رکوردی با عنوان ایجاد شده هست یا خیر.
سپس بررسی می کنیم که پاسخ یک کد موقعیت 302 با سربرگ موقعیت اشاره شده به صفحه اصلی باشد.
در پایان بررسی می کنیم که عنوان لینک در صفحه اصلی دیده می شود یا خیر.
تست ارزیابی خطا
وقتی کاربر داده‌های بد را می فرستد انتظار داریم ما انتظار داریم ارزیابی بتواند آن را تشخیص دهد.
/** @test */
function link_is_not_created_if_validation_fails()
{
    $response = $this->post('/submit');

    $response->assertSessionHasErrors(['title', 'url', 'description']);

از assertSessionHasErrors() لاراول برای اطمینان از اینکه هر بخش دارای خطاهای ارزیابی برای هر فیلد مورد تقاضا است استفاده می شود. از آنجا که داده های خالی را به روت ارسال می کنیم انتظار داریم قانون required برای هر فیلدی کار کند.
برای اجرای یک تست مناسب بررسی کار از دستورات زیر استفاده کنید: