Мақолаҳо

Бо мисолҳои оддӣ бо истифода аз PHPUnit ва PEST чӣ гуна санҷишҳоро дар Ларавел омӯзед

Вақте ки сухан дар бораи санҷишҳои автоматӣ ё санҷишҳои воҳид меравад, дар ҳама гуна забони барномасозӣ ду ақидаи муқобил вуҷуд дорад:

  • Беҳудаи вақт
  • Шумо бе он кор карда наметавонед

Ҳамин тавр, бо ин мақола мо кӯшиш хоҳем кард, ки собиқро бовар кунонад, алахусус бо нишон додани он, ки оғоз кардани санҷиши автоматӣ дар Ларавел то чӣ андоза осон аст.

Аввал биёед дар бораи "чаро" сӯҳбат кунем ва сипас биёед якчанд мисолҳоро дар бораи он бубинем.

Чаро мо ба санҷиши автоматӣ ниёз дорем

Санҷишҳои автоматӣ қисмҳои кодро иҷро мекунанд ва дар бораи хатогиҳо хабар медиҳанд. Ин соддатарин роҳи тавсифи онҳост. Тасаввур кунед, ки як хусусияти навро дар барнома паҳн мекунад ва он гоҳ як ёвари роботи шахсӣ рафта, хусусияти навро дастӣ месанҷад ва ҳамзамон месанҷад, ки оё рамзи нав ягон хусусиятҳои кӯҳнаро вайрон накардааст.

Ин бартарии асосӣ аст: дубора санҷидани ҳамаи хусусиятҳо ба таври худкор. Ин метавонад кори иловагӣ ба назар расад, аммо агар шумо ба "робот" нагӯед, ки ин корро анҷом диҳед, мо бояд ба таври дигар ин корро дастӣ кунем, дуруст? 

Ё ин ки хусусиятҳои нав метавонанд бидуни санҷиши кор, ки оё онҳо кор мекунанд, бароварда шаванд ва умедворанд, ки корбарон дар бораи хатогиҳо хабар медиҳанд.

Санҷишҳои автоматикунонидашуда метавонанд ба мо як қатор афзалиятҳо диҳанд:

  • Сарфаи вақти санҷиши дастӣ;
  • Онҳо ба шумо имкон медиҳанд, ки вақтро ҳам дар функсияи нав ва ҳам дар функсияҳои муттаҳидшуда бо роҳи пешгирӣ аз регрессия сарфа кунед;
  • Ин фоидаро ба ҳамаи хусусиятҳои нав ва ҳамаи хусусиятҳои аллакай татбиқшуда зиёд кунед;
  • Се нуқтаи қаблӣ ба ҳар як версияи нав дахл дорад;
  • ...

Кӯшиш кунед, ки аризаи худро пас аз як ё ду сол бо таҳиягарони нав дар гурӯҳ тасаввур кунед, ки коди дар солҳои қаблӣ навишташударо намедонанд ва ҳатто чӣ гуна санҷидани онро намедонанд. 

Аввалин озмоишҳои автоматии мо

Барои иҷрои якум санҷиши автоматӣ дар Laravel, ба шумо ягон код навиштан лозим нест. Бале, шумо инро дуруст хонед. Ҳама чиз аллакай дар насби пешакӣ танзим ва омода карда шудаастdefiНити Ларавел, аз ҷумла намунаи аввалини асосӣ.

Шумо метавонед лоиҳаи Laravel-ро насб кунед ва фавран санҷишҳои аввалро иҷро кунед:

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 аст, ки TestCase-ро васеъ мекунад PHPUnit
  • Дар дохили ҳар як синф шумо метавонед якчанд усулҳоро эҷод кунед, одатан як усул барои санҷиш
  • Дар дохили ҳар як усул се амал мавҷуд аст: омода кардани вазъият, баъд амал ва сипас тафтиш (тасдиқ кардан) ки натиҷа чӣ гуна интизор аст ё не

Сохтор, ин ҳама чизест, ки шумо бояд донед, ҳама чиз аз чизҳои дақиқе, ки шумо мехоҳед санҷиданӣ бошед, вобаста аст.

Барои тавлиди синфи санҷиши холӣ, танҳо ин фармонро иҷро кунед:

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(). Шумо метавонед ҳамаи тасдиқҳоро дар ҳуҷҷатҳои расмии дастрас тафтиш кунед PHPUnit e Ҷавоби Ларавел . Дар хотир доред, ки дар ин мавзӯъ баъзе изҳороти умумӣ вуҷуд доранд $this, дар ҳоле ки дигарон тафтиш мушаххас $responseаз занги масир.

Чизи дигари муҳим ин аст use RefreshDatabase;изҳорот, бо зарба, дар болои синф ворид карда шудааст. Вақте ки амалҳои санҷишӣ метавонанд ба пойгоҳи додаҳо таъсир расонанд, зарур аст, зеро дар ин мисол, сабти сабти нав дар usersҷадвали пойгоҳи додаҳо. Барои ин, шумо бояд базаи санҷишии алоҳида эҷод кунед, ки бо он нав карда мешавад php artisan migrate:freshҳар дафъае, ки санҷишҳо гузаронида мешаванд.

Шумо ду интихоб доред: ба таври ҷисмонӣ пойгоҳи додаҳои алоҳида эҷод кунед ё махзани SQLite-и хотираро истифода баред. Ҳарду дар файл танзим карда шудаанд phpunit.xmlбо нобаёнӣ таъмин карда мешавадdefiнита бо Ларел. Махсусан, ба шумо ин қисм лозим аст:

<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();
    }
}

Ин дар бораи шакли воридшавӣ аст. Мантиқ ба сабти ном монанд аст, дуруст? Аммо ба ҷои ду се усул, аз ин рӯ ин намунаи санҷиши сенарияҳои хуб ва бад аст. Ҳамин тавр, мантиқи умумӣ ин аст, ки шумо бояд ҳарду ҳолатро санҷед: вақте ки корҳо хуб мешаванд ва вақте ки онҳо ноком мешаванд.

Бюллетени инноватсионӣ
Муҳимтарин хабарҳоро дар бораи навоварӣ аз даст надиҳед. Барои гирифтани онҳо тавассути почтаи электронӣ обуна шавед.

Инчунин, он чизе, ки шумо дар ин санҷиш мебинед, истифодаи он аст Фабрикаҳои базаи маълумот : Laravel корбари қалбакӣ эҷод мекунад ( боз, дар базаи санҷиши навшудаи шумо ) ва сипас кӯшиш мекунад, ки бо маълумоти дуруст ё нодуруст ворид шавад.

Бори дигар, Ларавел пешакии заводро тавлид мекунад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, якчанд намуди санҷиши автоматӣ мавҷуданд. Шумо метавонед шартҳои зеринро пайдо кунед:

  • Санҷишҳои воҳидҳо
  • Санҷиши хусусият
  • Санҷишҳои ҳамгироӣ
  • Санҷишҳои функсионалӣ
  • Санҷиши ниҳоӣ
  • Санҷишҳои қабул
  • Санҷишҳои дуд
  • ва гайра.

Ин мураккаб садо медиҳад ва фарқиятҳои воқеии байни ин намуди санҷишҳо баъзан норавшан мешаванд. Аз ин рӯ, Ларавел ҳамаи ин истилоҳҳои печидаро содда карда, онҳоро ба ду гурӯҳбандӣ кардааст: воҳид/хусусият.

Оддӣ карда гӯем, санҷишҳои хусусият кӯшиш мекунанд, ки функсияҳои воқеии барномаҳои шуморо иҷро кунанд: URL-ро гиред, API-ро занг занед, рафтори дақиқро ба мисли пур кардани варақа тақлид кунед. Санҷишҳои хусусиятҳо одатан ҳамон ё шабеҳеро иҷро мекунанд, ки ҳар як корбари лоиҳа дар ҳаёти воқеӣ дастӣ анҷом медиҳад.

Санҷишҳои воҳидӣ ду маъно доранд. Умуман, шумо метавонед дарк кунед, ки ҳама гуна санҷиши автоматӣ "озмоиши воҳид" номида мешавад ва тамоми равандро "озмоиши воҳид" номидан мумкин аст. Аммо дар заминаи функсионалӣ ва воҳид, ин раванд дар бораи санҷиши воҳиди мушаххаси коди ғайридавлатӣ дар алоҳидагӣ мебошад. Масалан, шумо синфи Laravel доред, ки методе, ки чизеро ҳисоб мекунад, ба монанди нархи умумии фармоиш бо параметрҳо. Аз ин рӯ, санҷиши воҳид нишон медиҳад, ки оё натиҷаҳои дуруст аз ин усул (воҳиди код) бо параметрҳои гуногун баргардонида мешаванд.

Барои тавлиди санҷиши воҳид, шумо бояд парчам илова кунед:

php artisan make:test OrderPriceTest --unit

Рамзи тавлидшуда бо санҷиши пеш аз воҳид яксон астdefiСистемаи Laravel:

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
}

Дар таҷрибаи шахсии ман бо лоиҳаҳои Laravel, аксарияти санҷишҳо санҷишҳои хусусиятҳо мебошанд, на санҷишҳои воҳид. Аввалан, шумо бояд санҷед, ки оё барномаи шумо кор мекунад, чӣ гуна одамони воқеӣ онро истифода мебаранд.

Баъдан, агар шумо ҳисобҳои махсус ё мантиқ дошта бошед, шумо метавонед definire ҳамчун як воҳид, бо параметрҳо, шумо метавонед санҷишҳои воҳиди махсус барои ин эҷод кунед.

Баъзан, навиштани санҷишҳо тағир додани худи код ва рефакторизатсияи онро талаб мекунад, то он "озмоишшаванда" шавад: ҷудо кардани воҳидҳо ба синфҳо ё усулҳои махсус.

Кай/чӣ гуна санҷишҳоро анҷом додан мумкин аст?

Истифодаи воқеии ин чӣ гуна аст php artisan test, кай шумо бояд онро иҷро кунед?

Вобаста аз ҷараёни кори тиҷорати шумо равишҳои гуногун мавҷуданд, аммо дар маҷмӯъ шумо бояд пеш аз ворид кардани тағиротҳои коди ниҳоӣ ба репозиторий ҳама санҷишҳо “сабз” (яъне бе хатогӣ) бошанд.

Сипас, шумо ба таври маҳаллӣ дар рӯи вазифаи худ кор мекунед ва вақте ки шумо фикр мекунед, ки анҷом додаед, якчанд санҷишҳоро иҷро кунед, то боварӣ ҳосил кунед, ки шумо ҳеҷ чизро вайрон накардаед. Дар хотир доред, ки рамзи шумо метавонад на танҳо дар мантиқи шумо хатогиҳоро ба вуҷуд орад, балки нохост рафтори дигареро дар коди ягон каси дигар, ки дер боз навишта шудааст, вайрон кунад.

Агар мо онро як ка-дам пеш гирем, автоматй кунондани он мумкин аст молидан чизҳо. Бо асбобҳои гуногуни CI/CD, шумо метавонед санҷишҳоро таъин кунед, то ҳар вақте ки касе тағиротро ба як шохаи мушаххаси Git тела диҳад ё пеш аз якҷоя кардани код ба шохаи истеҳсолот. Соддатарин ҷараёни кор ин истифодаи Github Actions аст, ман дорам як видеои алоҳида ки инро исбот мекунад.

Шумо чиро бояд озмоиш кунед?

Дар бораи то чӣ андоза андозаи ба истилоҳ "фарогирии санҷиш" бояд андешаҳои гуногун вуҷуд дошта бошанд: ҳар як амалиёт ва ҳолати имконпазирро дар ҳар саҳифа санҷед ё корро ба қисмҳои муҳимтарин маҳдуд кунед.

Дарвоқеъ, дар ин ҷо ман бо одамоне розӣ мешавам, ки санҷиши автоматиро барои гирифтани вақти бештар аз додани фоидаи воқеӣ айбдор мекунанд. Ин метавонад рӯй диҳад, агар шумо барои ҳар як ҷузъиёт санҷишҳо нависед. Гуфта мешавад, ки он метавонад аз ҷониби лоиҳаи шумо талаб карда шавад: саволи асосӣ ин аст, ки "нархи хатогии эҳтимолӣ чист".

Ба ибораи дигар, ба шумо лозим аст, ки кӯшишҳои санҷишии худро бо саволи "Агар ин код ноком шавад, чӣ мешавад?" Агар системаи пардохти шумо хатогиҳо дошта бошад, он бевосита ба тиҷорат таъсир мерасонад. Ҳамин тавр, агар функсияҳои нақшҳо/иҷозатҳои шумо вайрон карда шаванд, ин як масъалаи бузурги амният аст.

Ба ман маъқул аст, ки чӣ тавр Мат Стауфер инро дар конфронс гуфт: "Шумо бояд аввал он чизҳоеро санҷед, ки агар онҳо ноком шаванд, шуморо аз коратон барканор мекунанд." Албатта, ин муболиға аст, аммо шумо фикр мекунед: аввал чизҳои муҳимро санҷед. Ва он гоҳ дигар хусусиятҳо, агар шумо вақт дошта бошед.

PEST: алтернативаи нав ба PHPUnit

Ҳамаи мисолҳои дар боло овардашуда ба воситаи санҷиши пешакии Laravel асос ёфтаандdefiшаб: PHPUnit . Аммо бо гузашти солҳо дар экосистема асбобҳои дигар пайдо шуданд ва яке аз маъмултаринҳост Зараррасон . Аз ҷониби корманди расмии Laravel сохта шудааст Нуно Мадуро , ҳадафи содда кардани синтаксис, сохтани коди навиштан барои санҷишҳоро боз ҳам тезтар мекунад.

Дар зери капот, он медавад su PHPUnit, ҳамчун қабати иловагӣ, танҳо кӯшиш мекунад, ки баъзе қисмҳои қаблан такроршавандаро кам кунадdefiНити рамзи PHPUnit.

Биёед як мисолро дида бароем. Синфи санҷиши пешакиро дар хотир доредdefinited дар Ларавел? Ман ба шумо хотиррасон мекунам:

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 дар Laravel, шумо бояд парчами иловагиро муайян кунед:

php artisan make:test HomepageTest --pest

То замони ин навиштан, PEST дар байни таҳиягарони Laravel хеле маъмул аст, аммо ин афзалияти шахсии шумост, ки оё ин абзори иловагӣ ва омӯхтани синтаксиси он ва инчунин ёддошти PHPUnit аст.

BlogInnovazione.it

Бюллетени инноватсионӣ
Муҳимтарин хабарҳоро дар бораи навоварӣ аз даст надиҳед. Барои гирифтани онҳо тавассути почтаи электронӣ обуна шавед.

Мақолаҳои охирин

Дахолати инноватсионӣ дар воқеияти васеъшуда бо тамошобини Apple дар поликлиникаи Катания

Дар поликлиникаи Катания амалиёти офтальмопластика бо истифода аз намоишгари тиҷоратии Apple Vision Pro анҷом дода шуд…

3 Май 2024

Манфиатҳои ранг кардани саҳифаҳо барои кӯдакон - ҷаҳони ҷодугарӣ барои ҳама синну сол

Рушди малакаҳои хуби моторӣ тавассути рангкунӣ кӯдаконро ба малакаҳои мураккабтаре, ба мисли навиштан омода мекунад. Барои ранг кардан…

2 Май 2024

Оянда ин аст: Чӣ гуна саноати боркашонӣ иқтисоди ҷаҳонро инқилоб мекунад

Бахши баҳрӣ як қудрати воқеии иқтисодии ҷаҳонӣ аст, ки ба бозори 150 миллиард доллар ҳаракат кардааст ...

1 Май 2024

Ноширон ва OpenAI барои танзими ҷараёни иттилооте, ки тавассути зеҳни сунъӣ коркард мешаванд, созишнома имзо мекунанд

Рӯзи душанбеи гузашта рӯзномаи Financial Times бо OpenAI созишнома эълон кард. FT журналистикаи сатҳи ҷаҳонии худро иҷозатнома медиҳад…

30 апрел 2024

Инноватсияро ба забони худ хонед

Бюллетени инноватсионӣ
Муҳимтарин хабарҳоро дар бораи навоварӣ аз даст надиҳед. Барои гирифтани онҳо тавассути почтаи электронӣ обуна шавед.

Моро дунбол кунед