تست: شروع به کار
معرفی
لاراول با آزمایش در ذهن ساخته شده است. در واقع، پشتیبانی از آزمایش با PHPUnit خارج از جعبه گنجانده شده است و یک
phpunit.xml
فایل از قبل برای برنامه شما تنظیم شده است. این فریم ورک همچنین با روشهای کمکی راحت ارائه میشود که به شما امکان میدهد برنامههای خود را به طور واضح آزمایش کنید.
به طور پیش فرض، دایرکتوری برنامه شما
tests
شامل دو دایرکتوری است:
Feature
و
Unit
. تست های واحد تست هایی هستند که بر روی بخش بسیار کوچک و جدا شده از کد شما تمرکز می کنند. در واقع، اکثر آزمونهای واحد احتمالاً بر روی یک روش متمرکز هستند. آزمایشهای ویژگی ممکن است بخش بزرگتری از کد شما را آزمایش کنند، از جمله نحوه تعامل چندین شی با یکدیگر یا حتی یک درخواست HTTP کامل به نقطه پایانی JSON.
یک
ExampleTest.php
فایل در هر دو دایرکتوری
Feature
و
Unit
تست ارائه شده است. پس از نصب یک برنامه جدید لاراول،
phpunit
در خط فرمان اجرا کنید تا تست های شما اجرا شود.
محیط
هنگام اجرای تست ها از طریق ، لاراول
به دلیل متغیرهای محیطی که در فایل تعریف شده است،
phpunit
به طور خودکار محیط پیکربندی را تنظیم می کند
. لاراول همچنین به طور خودکار جلسه و حافظه پنهان را
در هنگام آزمایش برای درایور پیکربندی میکند، به این معنی که هیچ جلسه یا دادهای از حافظه پنهان در حین آزمایش باقی نمیماند.
testing
phpunit.xml
array
در صورت لزوم می توانید مقادیر پیکربندی محیط آزمایشی دیگر را تعریف کنید. متغیرهای
testing
محیط ممکن است در
phpunit.xml
فایل پیکربندی شده باشند، اما مطمئن شوید که کش پیکربندی خود را با استفاده از
config:clear
دستور Artisan قبل از اجرای آزمایشات خود پاک کنید!
علاوه بر این، می توانید یک
.env.testing
فایل در ریشه پروژه خود ایجاد کنید. این فایل
.env
هنگام اجرای آزمایشهای PHPUnit یا اجرای دستورات Artisan با این گزینه، فایل را
لغو میکند
--env=testing
.
ایجاد و اجرای تست ها
برای ایجاد یک تست جدید، از
make:test
دستور Artisan استفاده کنید:
// Create a test in the Feature directory...php artisan make:test UserTest // Create a test in the Unit directory...php artisan make:test UserTest --unit
هنگامی که تست تولید شد، می توانید روش های تست را همانطور که معمولا با استفاده از PHPUnit تعریف می کنید، تعریف کنید. برای اجرای تست های خود،
phpunit
دستور را از ترمینال خود اجرا کنید:
<?php namespace Tests\Unit; use PHPUnit\Framework\TestCase; class ExampleTest extends TestCase{ /** * A basic test example. * * @return void */ public function testBasicTest() { $this->assertTrue(true); }}
setUp
اگر متدهای / خود راtearDown
در یک کلاس آزمایشی تعریف میکنید، حتماً متدهایparent::setUp()
/ مربوطهparent::tearDown()
را در کلاس والد فراخوانی کنید.