بیشتر

زده کړئ چې څنګه په لارویل کې ازموینې ترسره کړئ د ساده مثالونو سره ، د PHPUnit او PEST په کارولو سره

کله چې دا د اتوماتیک ازموینو یا واحد ازموینې ته راځي ، په هره برنامه ژبه کې ، دوه مخالف نظرونه شتون لري:

  • د وخت ضایع کول
  • تاسو پرته له دې نشئ کولی

نو ، د دې مقالې سره به موږ هڅه وکړو چې پخوانی قانع کړو ، په ځانګړي توګه په ډاګه کولو سره چې په لارویل کې د اتومات ازموینې سره پیل کول څومره اسانه دي.

لومړی راځئ چې د "ولې" په اړه وغږیږو، او بیا راځئ چې ځینې مثالونه وګورو چې څنګه.

ولې موږ اتومات ازموینې ته اړتیا لرو

اتومات ازموینې د کوډ برخې پرمخ وړي او د کومې تېروتنې راپور ورکوي. دا د دوی د تشریح کولو ترټولو ساده لاره ده. تصور وکړئ چې په اپلیکیشن کې د نوي فیچر رامینځته کول ، او بیا د شخصي روبوټ معاون به لاړ شي او په لاسي ډول به نوې ب featureه ازموینه وکړي ، پداسې حال کې چې دا هم ازموي چې ایا نوی کوډ هیڅ زاړه ب featuresې نه ماتوي.

دا اصلي ګټه ده: په اتوماتيک ډول د ټولو ځانګړتیاو بیاکتنه. دا ممکن د اضافي کار په څیر بریښي ، مګر که تاسو "روبوټ" ته ونه وایئ چې دا وکړي ، موږ باید په بدیل سره دا په لاسي ډول ترسره کړو ، سمه ده؟ 

یا نوې ب featuresې پرته له ازموینې خوشې کیدی شي چې ایا دوی کار کوي ، امید لري چې کارونکي به د بګ راپور ورکړي.

اتومات ازموینې کولی شي موږ ته ډیری ګټې راکړي:

  • د لاسي ازموینې وخت خوندي کړئ؛
  • دوی تاسو ته اجازه درکوي چې د نوي پلي شوي فعالیت او همغږي شوي فعالیتونو کې د راجسټریشن څخه مخنیوي سره وخت خوندي کړئ؛
  • دا ګټه د ټولو نویو ځانګړتیاو او ټولو ځانګړتیاو سره چې دمخه پلي شوي ضرب کړئ؛
  • پخوانۍ درې ټکي په هر نوي نسخه کې پلي کیږي؛
  • ...

هڅه وکړئ خپل غوښتنلیک په یو یا دوه کلونو کې تصور کړئ ، په ټیم کې د نوي پراختیا کونکو سره چې په تیرو کلونو کې لیکل شوي کوډ نه پوهیږي ، یا حتی دا څنګه ازموي. 

زموږ لومړنۍ اتومات ازموینې

د لومړي ترسره کولو لپاره په لارویل کې اتومات ازموینه، تاسو اړتیا نلرئ کوم کوډ ولیکئ. هو، تاسو دا سمه لوستل. هرڅه دمخه تنظیم شوي او د نصب کولو دمخه چمتو شويdefiد لاراویل نایټ، په شمول د لومړنۍ لومړنۍ بیلګې په شمول.

تاسو کولی شئ د لارویل پروژې نصبولو هڅه وکړئ او سمدلاسه لومړۍ ازموینې پرمخ وړئ:

laravel new project
cd project
php artisan test

دا باید ستاسو په کنسول کې پایله وي:

که موږ مخکې ته یو نظر وکړوdefiد لارویل شپه /testsموږ دوه فایلونه لرو:

tests/Feature/ExampleTest.php :

class ExampleTest extends TestCase
{
    public function test_the_application_returns_a_successful_response()
    {
        $response = $this->get('/');
 
        $response->assertStatus(200);
    }
}

تاسو اړتیا نلرئ په کوم ترکیب پوه شئ ترڅو پوه شئ چې دلته څه پیښیږي: کور پاڼه پورته کړئ او وګورئ چې ایا د حالت کوډ HTTP è "200 OK".

د میتود نوم په نوم هم پیژندل کیږي test_the_application_returns_a_successful_response() د لوستلو وړ متن کیږي کله چې تاسو د ازموینې پایلې وګورئ، په ساده ډول د لاندې لیکې سمبول د ځای سره ځای په ځای کولو سره.

tests/Unit/ExampleTest.php :

class ExampleTest extends TestCase
{
    public function test_that_true_is_true()
    {
        $this->assertTrue(true);
    }
}

یو څه بې معنی ښکاري، وګورئ چې وګورئ دا ریښتیا ده؟ 

موږ به یو څه وروسته په ځانګړي ډول د واحد ازموینې په اړه وغږیږو. د اوس لپاره، تاسو اړتیا لرئ پوه شئ چې عموما په هره ازموینه کې څه پیښیږي.

  • په فولډر کې د هرې ازموینې فایل /tests د PHP ټولګی دی چې د ټیسټ کیس پراخوي پی ایچ پی یونټ
  • په هر ټولګي کې، تاسو کولی شئ ډیری میتودونه رامینځته کړئ، معمولا د وضعیت ازموینې لپاره یو میتود
  • په هره طریقه کې درې کړنې شتون لري: د وضعیت چمتو کول، بیا اقدام کول او بیا تایید کول (تایید کول) چې آیا پایله یې د توقع سره سم ده.

په ساختماني ډول، دا ټول هغه څه دي چې تاسو ورته اړتیا لرئ پوه شئ، نور هرڅه په دقیقو شیانو پورې اړه لري چې تاسو یې ازموینه غواړئ.

د خالي ازموینې ټولګي رامینځته کولو لپاره ، په ساده ډول دا کمانډ پرمخ وړئ:

php artisan make:test HomepageTest

فایل به پیدا شي tests/Feature/HomepageTest.php:

class HomepageTest extends TestCase
{
    // Replace this method with your own ones
    public function test_example()
    {
        $response = $this->get('/');
 
        $response->assertStatus(200);
    }
}

اوس راځئ وګورو چې څه پیښیږي که چیرې د ازموینې کوډ په لارویل کې ناکام شي

راځئ چې اوس وګورو چې څه پیښیږي که د ازموینې ادعاګانې تمه شوې پایله بیرته نه راوړي.

راځئ چې دې ته د ازموینې مثال بدل کړو:

class ExampleTest extends TestCase
{
    public function test_the_application_returns_a_successful_response()
    {
        $response = $this->get('/non-existing-url');
 
        $response->assertStatus(200);
    }
}
 
 
class ExampleTest extends TestCase
{
    public function test_that_true_is_false()
    {
        $this->assertTrue(false);
    }
}

او اوس، که موږ کمانډ چلوو php artisan test بیا:

 FAIL  Tests\Unit\ExampleTest
⨯ that true is true
 
 FAIL  Tests\Feature\ExampleTest
⨯ the application returns a successful response
 
---
 
• Tests\Unit\ExampleTest > that true is true
Failed asserting that false is true.
 
at tests/Unit/ExampleTest.php:16
   12▕      * @return void
   13▕      */
   14▕     public function test_that_true_is_true()
   15▕     {
➜  16▕         $this->assertTrue(false);
   17▕     }
   18▕ }
   19▕
 
• Tests\Feature\ExampleTest > the application returns a successful response
Expected response status code [200] but received 404.
Failed asserting that 200 is identical to 404.
 
at tests/Feature/ExampleTest.php:19
   15▕     public function test_the_application_returns_a_successful_response()
   16▕     {
   17▕         $response = $this->get('/non-existing-url');
   18▕
➜  19▕         $response->assertStatus(200);
   20▕     }
   21▕ }
   22▕
 
 
Tests:  2 failed
Time:   0.11s

دوه ناکامې ازموینې شتون لري چې د FAIL په توګه په نښه شوي، لاندې توضیحات او تیرونه د ازموینې دقیقې کرښې ته اشاره کوي چې ناکام شوي. تېروتنې په دې ډول ښودل شوي دي.

بېلګه: په Laravel کې د راجسټریشن فارم کوډ ازموینه

فرض کړئ چې موږ یوه فورمه لرو او موږ اړتیا لرو چې مختلف قضیې و ازمویو: موږ ګورو چې ایا دا د غلط معلوماتو سره ناکامه کیږي ، موږ ګورو چې ایا دا د سم ان پټ سره بریالي کیږي ، او داسې نور.

رسمي سټارټر کټ د لارویل هوا لخوا i شامل دي د هغې دننه د فعالیت ازموینه. راځئ چې له هغه ځایه ځینې مثالونه وګورو:

tests/Feature/RegistrationTest.php

use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
 
class RegistrationTest extends TestCase
{
    use RefreshDatabase;
 
    public function test_registration_screen_can_be_rendered()
    {
        $response = $this->get('/register');
 
        $response->assertStatus(200);
    }
 
    public function test_new_users_can_register()
    {
        $response = $this->post('/register', [
            'name' => 'Test User',
            'email' => 'test@example.com',
            'password' => 'password',
            'password_confirmation' => 'password',
        ]);
 
        $this->assertAuthenticated();
        $response->assertRedirect(RouteServiceProvider::HOME);
    }
}

دلته موږ په یوه ټولګي کې دوه ازموینې لرو، ځکه چې دوی دواړه د راجستریشن فورمې سره تړاو لري: یو یې چک کوي چې آیا فورمه په سمه توګه ډکه شوې او بل یې چک کوي چې ایا سپارل ښه کار کوي.

راځئ چې د پایلې تصدیق کولو لپاره دوه نورو میتودونو سره آشنا شو، دوه نور ادعاګانې: $this->assertAuthenticated()$response->assertRedirect(). تاسو کولی شئ په رسمي اسنادو کې موجود ټولې ادعاګانې چیک کړئ پی ایچ پی یونټ e Laravel غبرګون . په یاد ولرئ چې ځینې عمومي ادعاګانې په موضوع کې واقع کیږي $this، پداسې حال کې چې نور ځانګړي چیک کوي $responseد لارې زنګ څخه.

بله مهمه خبره دا ده use RefreshDatabase;بیان، د ضربې سره، د ټولګي پورته داخل شوی. دا اړینه ده کله چې د ازموینې کړنې کولی شي ډیټابیس اغیزه وکړي، لکه څنګه چې په دې مثال کې، ننوتل په ډیټابیس کې یو نوی ننوتل اضافه کوي. usersډیټابیس جدول د دې لپاره، تاسو باید د ازموینې جلا ډیټابیس جوړ کړئ کوم چې به ورسره تازه شي php artisan migrate:freshهرکله چې ازموینې ترسره کیږي.

تاسو دوه اختیارونه لرئ: په فزیکي توګه یو جلا ډیټابیس جوړ کړئ یا د حافظې SQLite ډیټابیس وکاروئ. دواړه په فایل کې تنظیم شوي phpunit.xmlد ډیفالټ لخوا چمتو شویdefiنيتا سره Laravel. په ځانګړې توګه، تاسو دې برخې ته اړتیا لرئ:

<php>
    <env name="APP_ENV" value="testing"/>
    <env name="BCRYPT_ROUNDS" value="4"/>
    <env name="CACHE_DRIVER" value="array"/>
    <!-- <env name="DB_CONNECTION" value="sqlite"/> -->
    <!-- <env name="DB_DATABASE" value=":memory:"/> -->
    <env name="MAIL_MAILER" value="array"/>
    <env name="QUEUE_CONNECTION" value="sync"/>
    <env name="SESSION_DRIVER" value="array"/>
    <env name="TELESCOPE_ENABLED" value="false"/>
</php>

وګورئ DB_CONNECTIONDB_DATABASEکومو باندې تبصره کیږي؟ که تاسو په خپل سرور کې SQLite لرئ، ترټولو ساده عمل دا دی چې په ساده ډول د دې لینونو بې برخې کول او ستاسو ازموینې به د دې حافظې ډیټابیس په وړاندې پرمخ ځي.

په دې ازموینه کې موږ وایو چې کاروونکي په بریالیتوب سره تصدیق شوی او سم کور پاڼې ته لیږدول شوی، مګر موږ کولی شو په ډیټابیس کې اصلي ډاټا هم و ازمو.

د دې کوډ سربیره:

$this->assertAuthenticated();
$response->assertRedirect(RouteServiceProvider::HOME);

موږ هم کارولی شو د ډیټابیس ازموینې ادعاګانې او داسې یو څه وکړئ:

$this->assertDatabaseCount('users', 1);
 
// Or...
$this->assertDatabaseHas('users', [
    'email' => 'test@example.com',
]);

د ننوتلو پاڼې بیلګه

راځئ چې اوس د Laravel Breeze سره د ننوتلو پاڼې بله بیلګه وګورو

tests/Feature/AuthenticationTest.php:

class AuthenticationTest extends TestCase
{
    use RefreshDatabase;
 
    public function test_login_screen_can_be_rendered()
    {
        $response = $this->get('/login');
 
        $response->assertStatus(200);
    }
 
    public function test_users_can_authenticate_using_the_login_screen()
    {
        $user = User::factory()->create();
 
        $response = $this->post('/login', [
            'email' => $user->email,
            'password' => 'password',
        ]);
 
        $this->assertAuthenticated();
        $response->assertRedirect(RouteServiceProvider::HOME);
    }
 
    public function test_users_can_not_authenticate_with_invalid_password()
    {
        $user = User::factory()->create();
 
        $this->post('/login', [
            'email' => $user->email,
            'password' => 'wrong-password',
        ]);
 
        $this->assertGuest();
    }
}

دا د ننوتلو فورمه ده. منطق د راجستریشن سره ورته دی، سمه ده؟ مګر د دوه پر ځای درې میتودونه، نو دا د دواړو ښه او بد سناریوګانو ازموینې یوه بیلګه ده. نو، عام منطق دا دی چې تاسو باید دواړه قضیې وڅیړئ: کله شیان ښه پرمخ ځي او کله چې دوی ناکام وي.

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.

همچنان ، هغه څه چې تاسو پدې ازموینه کې ګورئ د کارولو کارول دي د ډیټابیس فابریکې : لارویل جعلي کارونکي جوړوي ( بیا، ستاسو په تازه شوي ټیسټ ډیټابیس کې ) او بیا د سم یا غلط اسنادو سره د ننوتلو هڅه کوي.

یوځل بیا، لارویل د فابریکې پری تولیدويdefiد غلطو معلوماتو سره نیټا Userماډل، د بکس څخه بهر.

database/factories/UserFactory.php:

class UserFactory extends Factory
{
    public function definition()
    {
        return [
            'name' => $this->faker->name(),
            'email' => $this->faker->unique()->safeEmail(),
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
            'remember_token' => Str::random(10),
        ];
    }
}

تاسو ګورئ ، څومره شیان پخپله د لارویل لخوا چمتو شوي ، نو ایا دا به زموږ لپاره اسانه وي چې ازموینه پیل کړئ؟

نو که موږ اعدام کړو php artisan testد Laravel Breeze نصبولو وروسته، موږ باید داسې یو څه وګورو:

 PASS  Tests\Unit\ExampleTest
✓ that true is true
 
 PASS  Tests\Feature\Auth\AuthenticationTest
✓ login screen can be rendered
✓ users can authenticate using the login screen
✓ users can not authenticate with invalid password
 
 PASS  Tests\Feature\Auth\EmailVerificationTest
✓ email verification screen can be rendered
✓ email can be verified
✓ email is not verified with invalid hash
 
 PASS  Tests\Feature\Auth\PasswordConfirmationTest
✓ confirm password screen can be rendered
✓ password can be confirmed
✓ password is not confirmed with invalid password
 
 PASS  Tests\Feature\Auth\PasswordResetTest
✓ reset password link screen can be rendered
✓ reset password link can be requested
✓ reset password screen can be rendered
✓ password can be reset with valid token
 
 PASS  Tests\Feature\Auth\RegistrationTest
✓ registration screen can be rendered
✓ new users can register
 
 PASS  Tests\Feature\ExampleTest
✓ the application returns a successful response
 
Tests:  17 passed
Time:   0.61s

د واحد ازموینو او نورو سره پرتله کولو فعالیت ازموینې

تاسو فرعي فولډرونه لیدلي دي tests/Feature e tests/Unit ?. 

د دوی ترمنځ توپیر څه دی؟ 

په نړیواله کچه، د Laravel/PHP ایکوسیستم څخه بهر، د اتوماتیک ازموینې ډیری ډولونه شتون لري. تاسو کولی شئ شرایط ومومئ لکه:

  • د واحد ازموینې
  • د فیچر ازموینه
  • د ادغام ازموینې
  • کاري ازموینې
  • له پای څخه تر پایه ازموینه
  • د منلو ازموینې
  • د سګرټ ازموینې
  • etc

دا پیچلې ښکاري، او د دې ډول ازموینو ترمنځ اصلي توپیرونه کله ناکله تیاره کیږي. له همدې امله لارویل دا ټول مغشوشونکي شرایط ساده کړي او په دوه برخو یې ګروپ کړي: واحد/خصوصیت.

په ساده ډول ، د فیچر ازموینې هڅه کوي ستاسو د غوښتنلیکونو ریښتیني فعالیت اجرا کړي: URL ترلاسه کړئ ، API ته زنګ ووهئ ، دقیق چلند نقل کړئ لکه د فارم ډکول. د فیچر ازموینې معمولا ورته یا ورته عملیات ترسره کوي لکه څنګه چې د پروژې کوم کارونکي به په لاسي ډول په ریښتیني ژوند کې ترسره کړي.

د واحد ازموینې دوه معنی لري. په عموم کې ، تاسو ممکن ومومئ چې هر ډول اتومات ازموینه د "یونټ ټیسټینګ" په نوم یادیږي او ټوله پروسه د "یونټ ټیسټینګ" بلل کیدی شي. مګر د واحد په مقابل کې د فعالیت په شرایطو کې ، دا پروسه د کوډ ځانګړي غیر عامه واحد ازموینې په اړه ده ، په انزوا کې. د مثال په توګه، تاسو د لارویل ټولګي لرئ د داسې میتود سره چې یو څه محاسبه کوي، لکه د پیرامیټونو سره د ټول ترتیب قیمت. له همدې امله، د واحد ازموینه به دا په ګوته کړي چې آیا سمې پایلې د دې میتود (کوډ واحد) څخه بیرته راستانه شوي، د مختلف پیرامیټونو سره.

د واحد ازموینې رامینځته کولو لپاره ، تاسو اړتیا لرئ یو بیرغ اضافه کړئ:

php artisan make:test OrderPriceTest --unit

تولید شوی کوډ د یونټ دمخه ازموینې ته ورته دیdefiلارویل سیسټم:

class OrderPriceTest extends TestCase
{
    public function test_example()
    {
        $this->assertTrue(true);
    }
}

لکه څنګه چې تاسو لیدلی شئ، دا شتون نلري RefreshDatabase, او دا یو دی defiد واحد ازموینې خورا عام تعریفونه: دا ډیټابیس ته لاس نه ورکوي، دا د "تور بکس" په توګه کار کوي، د چلونکي غوښتنلیک څخه جلا شوی.

د هغه مثال تقلید کولو هڅه کول چې ما مخکې ورته اشاره وکړه، راځئ چې تصور وکړو چې موږ د خدمت ټولګي لرو OrderPrice.

app/Services/OrderPriceService.php:

class OrderPriceService
{
    public function calculatePrice($productId, $quantity, $tax = 0.0)
    {
        // Some kind of calculation logic
    }
}

بیا، د واحد ازموینه کیدای شي داسې ښکاري:

class OrderPriceTest extends TestCase
{
    public function test_single_product_no_taxes()
    {
        $product = Product::factory()->create(); // generate a fake product
        $price = (new OrderPriceService())->calculatePrice($product->id, 1);
        $this->assertEquals(1, $price);
    }
 
    public function test_single_product_with_taxes()
    {
        $price = (new OrderPriceService())->calculatePrice($product->id, 1, 20);
        $this->assertEquals(1.2, $price);
    }
 
    // More cases with more parameters
}

د لارویل پروژو سره زما په شخصي تجربه کې ، د ازموینو لوی اکثریت د فیچر ازموینې دي ، نه د واحد ازموینې. لومړی، تاسو اړتیا لرئ ازموینه وکړئ چې آیا ستاسو غوښتنلیک کار کوي، هغه طریقه چې اصلي خلک به یې کاروي.

بل، که تاسو ځانګړي محاسبې یا منطق لرئ تاسو کولی شئ definire د یو واحد په توګه، د پیرامیټونو سره، تاسو کولی شئ په ځانګړې توګه د دې لپاره د واحد ازموینې جوړې کړئ.

ځینې ​​​​وختونه، د ازموینې لیکلو ته اړتیا لري چې پخپله کوډ تعدیل کړي او بیا یې بیاکتنه وکړي ترڅو دا نور "ازموینې" کړي: د واحدونو جلا کول په ځانګړو ټولګیو یا میتودونو کې.

کله/څنګه ازموینه ترسره کړئ؟

د دې اصل ګټه څه ده php artisan test، کله باید دا چل کړئ؟

ستاسو د سوداګرۍ کاري فلو پورې اړه لري مختلف طریقې شتون لري، مګر عموما تاسو اړتیا لرئ ډاډ ترلاسه کړئ چې ټولې ازموینې "شنه" دي (د بیلګې په توګه له خطا پاک) مخکې له دې چې ذخیره ته د وروستي کوډ بدلونونو فشار ورکړئ.

بیا، تاسو په محلي توګه په خپل کار کې کار کوئ، او کله چې تاسو فکر کوئ چې تاسو سرته رسولي، ځینې ازموینې ترسره کړئ ترڅو ډاډ ترلاسه کړئ چې تاسو هیڅ شی نه مات کړی. په یاد ولرئ، ستاسو کوډ ممکن نه یوازې ستاسو په منطق کې د بګ لامل شي بلکې په غیر ارادي ډول د بل چا په کوډ کې ځینې نور چلند مات کړي چې ډیر دمخه لیکل شوي.

که موږ دا یو ګام نور هم واخلو، دا د اتومات کولو امکان لري ملټ شیان د مختلف CI / CD وسیلو سره ، تاسو کولی شئ د چلولو لپاره ازموینې مشخص کړئ کله چې یو څوک ځانګړي Git څانګې ته بدلونونه فشار راوړي یا د تولید څانګې کې د کوډ ضمیمه کولو دمخه. ترټولو ساده کاري فلو به د ګیتوب عملونو کارول وي ، زه لرم یوه جلا ویډیو کوم چې دا ثابتوي.

تاسو باید څه ازموینه وکړئ؟

په دې اړه مختلف نظرونه شتون لري چې د "ازموینې پوښښ" باید څومره لوی وي: په هره پاڼه کې هر ممکنه عملیات او قضیه هڅه وکړئ، یا کار خورا مهم برخو ته محدود کړئ.

په حقیقت کې، دا هغه ځای دی چې زه د هغو خلکو سره موافق یم چې د اتوماتیک ازموینې تور لګوي چې د حقیقي ګټې چمتو کولو په پرتله ډیر وخت نیسي. دا واقع کیدی شي که تاسو د هر تفصیل لپاره ازموینې ولیکئ. هغه وویل، دا ممکن ستاسو د پروژې لخوا اړین وي: اصلي پوښتنه دا ده چې "د احتمالي غلطی قیمت څه دی".

په بل عبارت، تاسو اړتیا لرئ د پوښتنې په کولو سره د ازموینې هڅو ته لومړیتوب ورکړئ "که چیرې دا کوډ ناکام شي نو څه به پیښ شي؟" که ستاسو د تادیې سیسټم کیچونه ولري، دا به مستقیم په سوداګرۍ اغیزه وکړي. نو که ستاسو د رول / اجازې فعالیت مات شوی وي ، دا یوه لویه امنیتي مسله ده.

زه خوښوم چې څنګه میټ سټوفر دا په کنفرانس کې وویل: "تاسو باید لومړی هغه شیان و ازموئ چې که دوی ناکام شي ، نو تاسو به له دندې ګوښه کړئ." البته دا مبالغه ده، مګر تاسو نظر ترلاسه کوئ: لومړی مهم توکي هڅه وکړئ. او بیا نور ځانګړتیاوې، که تاسو وخت لرئ.

PEST: د PHPUnit لپاره نوی بدیل

ټولې پورتنۍ بیلګې د Laravel پری ازموینې وسیلې پراساس ديdefiشپه: پی ایچ پی یونټ . مګر د کلونو په اوږدو کې نور وسایل په ایکوسیستم کې راڅرګند شوي او یو له وروستي مشهور دی PEST . د Laravel رسمي کارمند لخوا رامینځته شوی نونو مادورو ، موخه یې د نحو ساده کول دي، د ازموینې لپاره د لیکلو کوډ حتی ګړندی کول.

د هود لاندې، دا چلیږي su PHPUnit، د اضافي پرت په توګه، یوازې هڅه کوي چې ځینې مخکې تکرار شوي برخې کمې کړيdefiد PHPUnit کوډ نیټ.

راځئ چې یو مثال وګورو. د پری فیچر ازموینې ټولګي په یاد ولرئdefiپه لارویل کې نیټډ؟ زه به تاسو ته یادونه وکړم:

namespace Tests\Feature;
 
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
 
class ExampleTest extends TestCase
{
    public function test_the_application_returns_a_successful_response()
    {
        $response = $this->get('/');
 
        $response->assertStatus(200);
    }
}

ایا تاسو پوهیږئ چې ورته ازموینه به د PEST سره څه ډول ښکاري؟

test('the application returns a successful response')->get('/')->assertStatus(200);

هو، د کوډ یوه کرښه او بس. نو، د PEST هدف دا دی چې د سر سر لرې کړي:

  • د هر څه لپاره د ټولګیو او میتودونو جوړول؛
  • د ازموینې قضیې توسیع؛
  • په جلا کرښو کې د عملونو په ایښودلو سره: په PEST کې تاسو کولی شئ دوی یوځای کړئ.

په لارویل کې د PEST ازموینې رامینځته کولو لپاره ، تاسو اړتیا لرئ یو اضافي بیرغ مشخص کړئ:

php artisan make:test HomepageTest --pest

د دې لیکنې سره سم، PEST د Laravel پراختیا کونکو ترمنځ خورا مشهور دی، مګر دا ستاسو شخصي غوره توب دی چې ایا دا اضافي وسیله وکاروئ او د هغې ترکیب زده کړئ، او همدارنګه د PHPUnit نوټ.

BlogInnovazione.it

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.

وروستي مقالې

خپرونکي او OpenAI تړونونه لاسلیک کوي ترڅو د مصنوعي استخباراتو لخوا پروسس شوي معلوماتو جریان تنظیم کړي

تیره دوشنبه، فایننشل ټایمز د OpenAI سره یوه معامله اعلان کړه. FT د نړۍ په کچه ژورنالیزم جواز ورکوي ...

30 اپریل 2024

آنلاین تادیات: دلته د سټیمینګ خدمات تاسو ته د تل لپاره تادیه کوي

ملیونونه خلک د سټیمینګ خدماتو لپاره تادیه کوي ، د میاشتنۍ ګډون فیس ورکوي. دا عام نظر دی چې تاسو…

29 اپریل 2024

Veeam د ransomware لپاره خورا پراخه ملاتړ وړاندې کوي ، له محافظت څخه تر غبرګون او رغیدو پورې

د Veeam لخوا Coveware به د سایبر غصب پیښو غبرګون خدماتو چمتو کولو ته دوام ورکړي. Coveware به د عدلي او درملنې وړتیاوې وړاندې کړي ...

23 اپریل 2024

شنه او ډیجیټل انقلاب: د وړاندوینې وړ ساتنه څنګه د تیلو او ګاز صنعت بدلوي

د وړاندوینې ساتنه د تیلو او ګاز سکتور کې انقلاب رامینځته کوي ، د نبات مدیریت لپاره د نوښت او فعال چلند سره.

22 اپریل 2024

نوښت په خپله ژبه ولولئ

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.

مونږ سره په