بخشی از سیستم تست در لاراول به صورت ساده


ساختار

در فایل testunit.xml در مسیر اصلی پروژه ما ساختار زیر را داریم :

<testsuites>
         <testsuite name=&quotUnit&quot>
           <directory suffix=&quotTest.php&quot>./tests/Unit</directory>
         </testsuite>
         <testsuite name=&quotFeature&quot>
             <directory suffix=&quotTest.php&quot>./tests/Feature</directory>
         </testsuite>
</testsuites>

ما در اینجا دو کیس دیفالت برای تست داریم و طبق این ساختار کافیه خدمون یکی جدید بهش اضافه کنیم :

<testsuites>
          <testsuite name=&quotUnit&quot>
            <directory suffix=&quotTest.php&quot>./tests/Unit</directory>
          </testsuite>
          <testsuite name=&quotFeature&quot>
              <directory suffix=&quotTest.php&quot>./tests/Feature</directory>
          </testsuite>
          <testsuite name=&quotMytest&quot> 
              <directory suffix=&quotTest.php&quot>./tests/Mytest</directory>
           </testsuite>
 </testsuites>

خب ما با توجه به مسیری که دادیم فولدری با نام Mytest در مسیر tests در پوشه پروژه می سازیم و فایل های تست خدمون رو داخلش مینویسیم .

اجرای دستور تست

جهت اجرای تمامی کیس های تست با دستور زیر همگی استارت میشن :

php artisan test

و برای اجرای یک کیس خاص دستور به این شکل می شود :

php artisan test --testsuite=Mytest

برای اینکه اگر در هنگام تست به خطا خورد ، بقیه عملیات متوقف بشه دستور رو به این شکل تغییر میدیم :

php artisan test --testsuite=Mytest --stop-on-failure

فایل های تست

<?php 

namespace Tests\Mytest; 

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

class RouteTest extends TestCase 
{ 
/** 
* A basic test example.
 * * @return void 
*/ 
public function test_route()
 { 
$response = $this->get('/');

$response->assertStatus(200); 
}
 } 

در مثال فوق ما یک فایل جدید درپوشه Mytest خودمون با نام RouteTest.php می سازیم و کد های بالا رو داخلش پیست میکنیم.

حتما به نام گذاری متد ها و کلاس دقت کنین چون در یک کلاس میشه چند تا تست انجام بشه مثلا در همین تست ، میتونیم دو متد با نام های test_login_route و test_register_route داشته باشیم

کد بالا چک میکنه که آیا مسیری که مشخص شده درست باز میشه یا خیر و در نهایت اگر درسته باز بشه با پیام سبز در تست های مشخص خواهد شد.

خود لاراول از سیستم php unit برای تست ها استفاده میکنه که برای آشنایی با متد های این ابزار کافیه داکیومنتشو بخونین :

https://phpunit.readthedocs.io/en/9.5/

همچنین توضیحات راجب تست کردن در لاراول رو میتونین در این صفحه از لاراول مشاهده کنین :

https://laravel.com/docs/8.x/testing




امیدوارم خیلی ساده تونسته باشم سیستم تست در لاراول رو براتون توضیح داده باشم .

در آخر مثل همیشه چند منبع برای یادگیری بیشتر :

https://semaphoreci.com/community/tutorials/getting-started-with-phpunit-in-laravel

https://soshace.com/testing-laravel-applications-like-a-pro-with-phpunit/