در دنیای توسعه نرمافزار، تستنویسی یکی از عناصر اساسی برای تضمین کیفیت و صحت عملکرد نرمافزار است. فریمورک لاراول به دلیل قابلیتها و امکانات گستردهای که ارائه میکند، تستنویسی را بسیار ساده کرده است. این موضوع به خصوص در مورد تستهای unit و feature صدق میکند.
دایرکتوری tests
در پروژههای لاراول به صورت پیشفرض دارای دو زیرشاخه اصلی به نامهای Feature
و Unit
است. هر کدام از این قسمتها برای نوع خاصی از تستنویسی طراحی شدهاند. در حالی که تستهای unit برای بررسی کردن عملکرد کوچکترین واحدهای کد (معمولاً توابع یا متدها) به کار میروند، تستهای feature برای ارزیابی رفتار کل سیستم مورد استفاده قرار میگیرند.
در فایلهای Unit
معمولاً از استفادههای عمده آن میتوان به تستنویسی برای مدلها یا توابع کاربردی اشاره کرد. به این صورت که هر تابع یا متدی که شما در پروژه خود اضافه میکنید باید یک تست مرتبط به خود داشته باشد. این موضوع باعث میشود تا خطاهای احتمالی در زمان توسعه زودتر شناسایی شوند.
اما در Feature
علاوه بر تست واحد، تستهایی نیز برای سناریوهای کامل و جریان کاری بزرگتر نوشته میشود. به عنوان مثال، شما میتوانید تست کنید که آیا یک کاربران میتواند به درستی ثبتنام کند یا خیر.
به علاوه، لاراول از پکیج PHPUnit
استفاده میکند که امکان نوشتن، اجرا کردن و مدیریت کردن تستها را در پروژه شما فراهم میکند. استفاده از test caseهای فراهم شده در لاراول کار شما را برای نگهداری و اجرای تستها بسیار ساده میکند.
در زیر چند نمونه کد مرتبط با دایرکتوری tests
آورده شده است:
<?php
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
public function testBasicTest()
{
$this->assertTrue(true);
}
}
در مثال بالا، یک تست simple در دایرکتوری unit نوشته شده که تنها تعیین میکند که true
باشد:
<?php
← در فایل تستی که ایجاد کردهاید، از این تگ برای شروع استفاده میشود.namespace Tests\Unit;
← فضای نام که به سیستم میگوید این کلاس تست در کجا قرار دارد و به دستهبندی کمک میکند.use PHPUnit\Framework\TestCase;
← کلاس پایه لاراول برای تستها که از کلاس TestCase
در PHPUnit استفاده میکند.class ExampleTest extends TestCase
← ایجاد یک کلاس جدید برای تست که از TestCase لاراول ارثبری کرده است.public function testBasicTest()
← یک تابع تست ساده که بررسی میکند مقدار true
درست است یا نه.$this->assertTrue(true);
← در این قسمت با استفاده از PHPUnit میگوییم مقدار true
باید صحیح باشد.