Ìwé

Kọ ẹkọ bi o ṣe le ṣe awọn idanwo ni Laravel pẹlu awọn apẹẹrẹ ti o rọrun, ni lilo PHPUnit ati PEST

Nigbati o ba de si awọn idanwo adaṣe tabi awọn idanwo ẹyọkan, ni eyikeyi ede siseto, awọn ero atako meji wa:

  • Ìfi àsìkò ṣòfò
  • O ko le ṣe laisi rẹ

Nitorinaa, pẹlu nkan yii a yoo gbiyanju lati parowa fun iṣaaju, ni pataki nipa iṣafihan bi o ṣe rọrun lati bẹrẹ pẹlu idanwo adaṣe ni Laravel.

Ni akọkọ jẹ ki a sọrọ nipa “idi”, ati lẹhinna jẹ ki a wo diẹ ninu awọn apẹẹrẹ ti bii.

Kini idi ti a nilo idanwo adaṣe

Awọn idanwo adaṣe ṣiṣẹ awọn apakan ti koodu ati jabo eyikeyi awọn aṣiṣe. Iyẹn ni ọna ti o rọrun julọ lati ṣe apejuwe wọn. Fojuinu yiyi ẹya tuntun ninu ohun elo kan, lẹhinna oluranlọwọ robot ti ara ẹni yoo lọ ṣe idanwo ẹya tuntun pẹlu ọwọ, lakoko ti o tun ṣe idanwo boya koodu tuntun ko fọ eyikeyi awọn ẹya atijọ.

Eyi ni anfani akọkọ: atunwo gbogbo awọn ẹya laifọwọyi. Eyi le dabi iṣẹ afikun, ṣugbọn ti o ko ba sọ fun “robot” lati ṣe, o yẹ ki a ṣe ni omiiran pẹlu ọwọ, otun? 

Tabi awọn ẹya tuntun le ṣe idasilẹ laisi idanwo boya wọn ṣiṣẹ, nireti pe awọn olumulo yoo jabo awọn idun.

Awọn idanwo adaṣe le fun wa ni ọpọlọpọ awọn anfani:

  • Fipamọ akoko idanwo afọwọṣe;
  • Wọn gba ọ laaye lati ṣafipamọ akoko mejeeji lori iṣẹ tuntun ti a ṣe imuse ati lori awọn iṣẹ isọdọkan nipa yago fun ipadasẹhin;
  • Isodipupo anfani yii nipasẹ gbogbo awọn ẹya tuntun ati gbogbo awọn ẹya ti a ti ṣe imuse;
  • Awọn aaye mẹta ti tẹlẹ lo si gbogbo ẹya tuntun;
  • ...

Gbiyanju lati fojuinu ohun elo rẹ ni ọdun kan tabi meji, pẹlu awọn olupilẹṣẹ tuntun lori ẹgbẹ ti ko mọ koodu ti a kọ ni awọn ọdun iṣaaju, tabi paapaa bii o ṣe le ṣe idanwo. 

Awọn idanwo adaṣe akọkọ wa

Lati ṣe akọkọ adaṣe adaṣe ni Laravel, o ko nilo lati kọ eyikeyi koodu. Bẹẹni, o ka iyẹn tọ. Ohun gbogbo ti wa ni tunto tẹlẹ ati pese sile ni fifi sori ẹrọ tẹlẹdefinite of Laravel, pẹlu awọn gan akọkọ ipilẹ apẹẹrẹ.

O le gbiyanju fifi sori ẹrọ iṣẹ akanṣe Laravel ati ṣiṣe awọn idanwo akọkọ lẹsẹkẹsẹ:

laravel new project
cd project
php artisan test

Eyi yẹ ki o jẹ abajade ninu console rẹ:

Ti a ba ya a wo ni awọn ṣaajudefinite ti Laravel /tests, a ni awọn faili meji:

idanwo/ẹya-ara/ApeereTest.php :

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

O ko nilo lati mọ eyikeyi sintasi lati ni oye ohun ti n ṣẹlẹ nibi: ṣajọpọ oju-iwe ile ki o ṣayẹwo boya koodu ipo naa HTTP è "200 OK".

Tun mọ bi orukọ ọna test_the_application_returns_a_successful_response() di ọrọ kika nigbati o wo awọn abajade idanwo, nirọrun nipa rirọpo aami abẹlẹ pẹlu aaye kan.

tests/Unit/ExampleTest.php :

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

O dabi asan diẹ, ṣiṣe ayẹwo lati rii boya eyi jẹ otitọ? 

A yoo sọrọ ni pataki nipa awọn idanwo ẹyọkan diẹ nigbamii. Fun bayi, o nilo lati ni oye ohun ti gbogbo ṣẹlẹ ni kọọkan igbeyewo.

  • Faili idanwo kọọkan ninu folda /tests ni a PHP kilasi ti o gbooro sii TestCase ti PHPUnit
  • Laarin kilasi kọọkan, o le ṣẹda awọn ọna pupọ, nigbagbogbo ọna kan fun ipo kan lati ṣe idanwo
  • Laarin ọna kọọkan awọn iṣe mẹta wa: ngbaradi ipo naa, lẹhinna ṣiṣe iṣe ati rii daju (fimulẹ) boya abajade jẹ bi o ti ṣe yẹ.

Ni igbekalẹ, iyẹn ni gbogbo ohun ti o nilo lati mọ, ohun gbogbo miiran da lori awọn ohun gangan ti o fẹ lati ṣe idanwo.

Lati ṣe agbekalẹ kilasi idanwo ti o ṣofo, nìkan ṣiṣẹ aṣẹ yii:

php artisan make:test HomepageTest

Faili ti wa ni ipilẹṣẹ 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);
    }
}

Bayi jẹ ki a wo kini yoo ṣẹlẹ ti koodu idanwo ba kuna ni Laravel

Jẹ ki a wo ohun ti o ṣẹlẹ ti awọn idaniloju idanwo ko ba da abajade ti a reti pada.

Jẹ ki a yi awọn idanwo apẹẹrẹ pada si eyi:

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

Ati ni bayi, ti a ba ṣiṣẹ aṣẹ naa php artisan test lẹẹkansi:

 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

Awọn idanwo meji ti o kuna, ti samisi bi FAIL, pẹlu awọn alaye ni isalẹ ati awọn ọfa ti n tọka si laini awọn idanwo gangan ti o kuna. Awọn aṣiṣe jẹ itọkasi ni ọna yii.

Apeere: Idanwo koodu fọọmu iforukọsilẹ ni Laravel

Ṣebi a ni fọọmu kan ati pe a nilo lati ṣe idanwo awọn ọran pupọ: a ṣayẹwo ti o ba kuna pẹlu data invalid, a ṣayẹwo ti o ba ṣaṣeyọri pẹlu titẹ sii to tọ, ati bẹbẹ lọ.

Awọn osise Starter kit nipasẹ Laravel Breeze pẹlu i idanwo iṣẹ-ṣiṣe laarin rẹ. Jẹ ki a wo awọn apẹẹrẹ diẹ lati ibẹ:

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

Nibi a ni awọn idanwo meji ni kilasi kan, nitori pe awọn mejeeji ni ibatan si fọọmu iforukọsilẹ: ọkan sọwedowo ti fọọmu naa ba ti kojọpọ ati sọwedowo miiran ti ifakalẹ ba ṣiṣẹ daradara.

Jẹ ki a di faramọ pẹlu awọn ọna meji diẹ sii fun ijẹrisi abajade, awọn iṣeduro meji diẹ sii: $this->assertAuthenticated()$response->assertRedirect(). O le ṣayẹwo gbogbo awọn assertions wa ninu awọn osise iwe aṣẹ ti PHPUnit e Idahun Laravel . Ṣe akiyesi pe diẹ ninu awọn iṣeduro gbogbogbo waye lori koko-ọrọ naa $this, nigba ti awọn miran ṣayẹwo awọn pato $responselati ipe ipa ọna.

Ohun pataki miiran ni use RefreshDatabase;gbólóhùn, pẹlu ọpọlọ, fi sii loke awọn kilasi. O jẹ dandan nigbati awọn iṣe idanwo le ni ipa lori ibi ipamọ data, bi ninu apẹẹrẹ yii, gedu ṣe afikun titẹsi tuntun ninu usersdatabase tabili. Fun eyi, o yẹ ki o ṣẹda aaye data idanwo lọtọ eyiti yoo ṣe imudojuiwọn pẹlu php artisan migrate:freshni gbogbo igba ti awọn igbeyewo ti wa ni ṣiṣe.

O ni awọn aṣayan meji: ṣẹda aaye data lọtọ ti ara tabi lo aaye data SQLite inu-iranti. Mejeji ti wa ni tunto ni awọn faili phpunit.xmlpese nipa aiyipadadefinita pẹlu Laravel. Ni pato, o nilo apakan yii:

<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>

Wo awọn DB_CONNECTIONDB_DATABASEeyi ti o ti wa ni commented lori? Ti o ba ni SQLite lori olupin rẹ, iṣẹ ti o rọrun julọ ni lati sọ awọn laini yẹn lasan ati pe awọn idanwo rẹ yoo ṣiṣẹ lodi si ibi ipamọ data inu-iranti naa.

Ninu idanwo yii a sọ pe olumulo ti jẹ ifọwọsi ni aṣeyọri ati darí si oju-iwe akọkọ ti o tọ, ṣugbọn a tun le ṣe idanwo data gangan ninu data data.

Ni afikun si koodu yii:

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

A tun le lo awọn igbelewọn igbeyewo database ki o si ṣe nkan bi eyi:

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

Apẹẹrẹ ti oju-iwe Wọle

Jẹ ki a wo apẹẹrẹ miiran ti oju-iwe Wọle pẹlu 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();
    }
}

O jẹ nipa fọọmu iwọle. Awọn kannaa ni iru si ìforúkọsílẹ, ọtun? Ṣugbọn awọn ọna mẹta dipo meji, nitorinaa eyi jẹ apẹẹrẹ ti idanwo mejeeji ti o dara ati awọn oju iṣẹlẹ buburu. Nitorinaa, ọgbọn ti o wọpọ ni pe o yẹ ki o ṣe idanwo awọn ọran mejeeji: nigbati awọn nkan ba dara ati nigbati wọn ba kuna.

Iwe iroyin Innovation
Maṣe padanu awọn iroyin pataki julọ lori isọdọtun. Forukọsilẹ lati gba wọn nipasẹ imeeli.

Paapaa, ohun ti o rii ninu idanwo yii ni lilo Database Factories Laravel ṣẹda iro olumulo ( lẹẹkansi, lori rẹ imudojuiwọn igbeyewo database ) ati lẹhinna gbiyanju lati wọle, pẹlu awọn iwe-ẹri ti o pe tabi ti ko tọ.

Lekan si, Laravel ṣe ipilẹṣẹ iṣaaju ile-iṣẹdefinita pẹlu eke data fun awọn Userawoṣe, ita apoti.

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),
        ];
    }
}

Ṣe o rii, awọn nkan melo ni Laravel funrararẹ pese, nitorinaa yoo rọrun fun wa lati bẹrẹ idanwo?

Nitorina ti a ba ṣiṣẹ php artisan testlẹhin fifi Laravel Breeze sori ẹrọ, o yẹ ki a rii nkan bii eyi:

 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

Awọn idanwo iṣẹ ṣiṣe ni akawe pẹlu awọn idanwo ẹyọkan ati awọn miiran

O ti rii awọn folda inu tests/Feature e tests/Unit ?. 

Kini iyato laarin wọn? 

Ni kariaye, ni ita ti ilolupo eda abemi Laravel/PHP, ọpọlọpọ awọn iru idanwo adaṣe lo wa. O le wa awọn ofin bii:

  • Awọn idanwo ẹyọkan
  • Idanwo ẹya ara ẹrọ
  • Awọn idanwo iṣọpọ
  • Awọn idanwo iṣẹ-ṣiṣe
  • Idanwo ipari-si-opin
  • Awọn idanwo gbigba
  • Awọn idanwo ẹfin
  • ati be be lo.

O dabi idiju, ati pe awọn iyatọ gangan laarin awọn iru awọn idanwo wọnyi jẹ alaiwu nigbakan. Ti o ni idi ti Laravel ti yepere gbogbo iruju awọn ofin ati akojọpọ wọn si meji: ọkan/ẹya ara ẹrọ.

Ni irọrun, awọn idanwo ẹya gbiyanju lati ṣiṣẹ iṣẹ ṣiṣe gangan ti awọn ohun elo rẹ: gba URL, pe API, farawe ihuwasi gangan bi kikun fọọmu naa. Awọn idanwo ẹya ara ẹrọ nigbagbogbo ṣe awọn iṣẹ kanna tabi iru bi olumulo agbese eyikeyi yoo ṣe, pẹlu ọwọ, ni igbesi aye gidi.

Awọn idanwo ẹyọkan ni awọn itumọ meji. Ni gbogbogbo, o le rii pe eyikeyi idanwo adaṣe ni a pe ni “idanwo apakan” ati pe gbogbo ilana ni a le pe ni “idanwo apakan”. Ṣugbọn ni ipo ti iṣẹ ṣiṣe dipo ẹyọkan, ilana yii jẹ nipa idanwo koodu kan pato ti kii ṣe ita gbangba, ni ipinya. Fun apẹẹrẹ, o ni kilasi Laravel pẹlu ọna ti o ṣe iṣiro nkan kan, bii idiyele aṣẹ lapapọ pẹlu awọn ayeraye. Nitorinaa, idanwo ẹyọkan yoo ṣalaye boya awọn abajade to pe ni a da pada lati ọna yẹn (ẹyọ koodu), pẹlu awọn aye oriṣiriṣi.

Lati ṣe ipilẹṣẹ idanwo ẹyọkan, o nilo lati ṣafikun asia kan:

php artisan make:test OrderPriceTest --unit

Awọn ti ipilẹṣẹ koodu jẹ kanna bi awọn ṣaaju kuro igbeyewodefiEto Laravel:

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

Bi o ti le rii, ko si RefreshDatabase, ati eyi jẹ ọkan ninu defiAwọn asọye idanwo ẹyọkan ti o wọpọ julọ: ko fọwọkan ibi ipamọ data, o ṣiṣẹ bi “apoti dudu” kan, ti o ya sọtọ lati ohun elo nṣiṣẹ.

Ni igbiyanju lati ṣafarawe apẹẹrẹ ti mo sọ tẹlẹ, jẹ ki a fojuinu pe a ni kilasi iṣẹ OrderPrice.

app/Services/OrderPriceService.php:

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

Lẹhinna, idanwo ẹyọkan le dabi nkan bi eyi:

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
}

Ninu iriri ti ara ẹni pẹlu awọn iṣẹ akanṣe Laravel, pupọ julọ awọn idanwo jẹ awọn idanwo Ẹya, kii ṣe awọn idanwo Unit. Ni akọkọ, o nilo lati ṣe idanwo boya ohun elo rẹ ṣiṣẹ, ọna ti awọn eniyan gidi yoo ṣe lo.

Nigbamii ti, ti o ba ni awọn iṣiro pataki tabi ọgbọn o le definire bi ẹyọkan, pẹlu awọn paramita, o le ṣẹda awọn idanwo ẹyọkan pataki fun iyẹn.

Nigba miiran, awọn idanwo kikọ nilo iyipada koodu funrararẹ ati tunṣe lati jẹ ki o jẹ “ayẹwo” diẹ sii: yiya sọtọ awọn ẹya si awọn kilasi pataki tabi awọn ọna.

Nigbawo / bawo ni lati ṣe awọn idanwo?

Kini lilo gangan ti eyi php artisan test, nigbawo ni o yẹ ki o ṣiṣẹ?

Awọn ọna oriṣiriṣi wa, ti o da lori iṣan-iṣẹ iṣowo rẹ, ṣugbọn ni gbogbogbo o nilo lati rii daju pe gbogbo awọn idanwo jẹ “alawọ ewe” (ie aṣiṣe-aṣiṣe) ṣaaju titari awọn iyipada koodu ipari si ibi ipamọ naa.

Lẹhinna, o ṣiṣẹ ni agbegbe lori iṣẹ rẹ, ati nigbati o ba ro pe o ti pari, ṣiṣe diẹ ninu awọn idanwo lati rii daju pe o ko ṣẹ ohunkohun. Ranti, koodu rẹ le fa awọn idun kii ṣe ninu ọgbọn rẹ nikan ṣugbọn tun ṣe aimọkan fọ ihuwasi miiran ninu koodu ẹnikan ti a kọ ni igba pipẹ sẹhin.

Ti a ba gbe igbesẹ siwaju, o ṣee ṣe lati ṣe adaṣe ọpọlọpọ awọn ohun. Pẹlu ọpọlọpọ awọn irinṣẹ CI/CD, o le pato awọn idanwo lati ṣiṣẹ nigbakugba ti ẹnikan ba ti awọn ayipada si ẹka Git kan pato tabi ṣaaju ki o to dapọ koodu sinu ẹka iṣelọpọ. Ṣiṣan iṣẹ ti o rọrun julọ yoo jẹ lati lo Awọn iṣe Github, Mo ni fidio lọtọ eyi ti o fi mule.

Kini o yẹ ki o ṣe idanwo?

Awọn ero oriṣiriṣi wa lori bii iwọn ti a pe ni “agbegbe idanwo” yẹ ki o jẹ: gbiyanju gbogbo iṣẹ ṣiṣe ati ọran lori gbogbo oju-iwe, tabi ṣe opin iṣẹ naa si awọn apakan pataki julọ.

Ni otitọ, eyi ni ibiti Mo gba pẹlu awọn eniyan ti o fi ẹsun idanwo adaṣe ti mu akoko diẹ sii ju pese anfani gangan. Eyi le ṣẹlẹ ti o ba kọ awọn idanwo fun gbogbo alaye kan. Iyẹn ti sọ, o le nilo nipasẹ iṣẹ akanṣe rẹ: ibeere akọkọ ni “kini idiyele ti aṣiṣe ti o pọju”.

Ni awọn ọrọ miiran, o nilo lati ṣe pataki awọn akitiyan idanwo rẹ nipa bibeere ibeere naa “Kini yoo ṣẹlẹ ti koodu yii ba kuna?” Ti eto isanwo rẹ ba ni awọn idun, yoo kan taara iṣowo naa. Nitorinaa ti iṣẹ ṣiṣe ti awọn ipa / awọn igbanilaaye ba bajẹ, eyi jẹ ọran aabo nla kan.

Mo fẹran bi Matt Stauffer ṣe fi sii ni apejọ kan: “O gbọdọ kọkọ idanwo awọn nkan wọnyẹn ti, ti wọn ba kuna, yoo mu ọ kuro ni iṣẹ rẹ.” Dajudaju iyẹn jẹ abumọ, ṣugbọn o gba imọran: gbiyanju nkan pataki ni akọkọ. Ati lẹhinna awọn ẹya miiran, ti o ba ni akoko.

PEST: yiyan tuntun si PHPUnit

Gbogbo awọn apẹẹrẹ ti o wa loke da lori ohun elo idanwo iṣaaju Laraveldefinito: PHPUnit . Ṣugbọn ni awọn ọdun diẹ awọn irinṣẹ miiran ti han ninu ilolupo eda ati ọkan ninu awọn olokiki tuntun tuntun ni AJE . Da nipa osise Laravel osise Nuno Maduro , ni ero lati ṣe simplify sintasi, ṣiṣe koodu kikọ fun awọn idanwo paapaa yiyara.

Labẹ awọn Hood, o nṣiṣẹ su PHPUnit, bi afikun Layer, kan gbiyanju lati gbe diẹ ninu awọn ẹya ti a ti sọ tẹlẹdefinite ti koodu PHPUnit.

Jẹ́ ká wo àpẹẹrẹ kan. Ranti kilasi idanwo ẹya iṣaajudefinited ni Laravel? Emi yoo ran ọ leti:

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

Ṣe o mọ kini idanwo kanna yoo dabi pẹlu PEST?

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

Bẹẹni, laini koodu kan ati pe iyẹn ni. Nitorinaa, ibi-afẹde ti PEST ni lati yọkuro lori ti:

  • Ṣiṣẹda awọn kilasi ati awọn ọna fun ohun gbogbo;
  • Igbeyewo irú itẹsiwaju;
  • Nipa fifi awọn iṣe sori awọn laini lọtọ: ni PEST o le dè wọn papọ.

Lati ṣe agbekalẹ idanwo PEST ni Laravel, o nilo lati pato asia afikun kan:

php artisan make:test HomepageTest --pest

Gẹgẹ bi kikọ yii, PEST jẹ olokiki pupọ laarin awọn idagbasoke Laravel, ṣugbọn o jẹ ayanfẹ ti ara ẹni boya lati lo ohun elo afikun yii ki o kọ ẹkọ sintasi rẹ, bakanna bi akọsilẹ PHPUnit kan.

BlogInnovazione.it

Iwe iroyin Innovation
Maṣe padanu awọn iroyin pataki julọ lori isọdọtun. Forukọsilẹ lati gba wọn nipasẹ imeeli.

Awọn iwe ti o ṣẹṣẹ

Ojo iwaju wa Nibi: Bawo ni Ile-iṣẹ Sowo ti n ṣe Iyika Eto-ọrọ Agbaye

Ẹka ọgagun jẹ agbara eto-aje agbaye ni otitọ, eyiti o ti lọ kiri si ọja 150 bilionu kan…

1 May 2024

Awọn olutẹwe ati OpenAI fowo si awọn adehun lati ṣe ilana ṣiṣan ti alaye ti a ṣe ilana nipasẹ Imọran Artificial

Ni ọjọ Aarọ to kọja, Awọn akoko Iṣowo kede adehun kan pẹlu OpenAI. FT ṣe iwe-aṣẹ iwe-akọọlẹ agbaye rẹ…

30 Kẹrin 2024

Awọn sisanwo ori ayelujara: Eyi ni Bii Awọn iṣẹ ṣiṣanwọle jẹ ki o sanwo lailai

Awọn miliọnu eniyan sanwo fun awọn iṣẹ ṣiṣanwọle, san awọn idiyele ṣiṣe alabapin oṣooṣu. O jẹ ero ti o wọpọ pe o…

29 Kẹrin 2024

Veeam ṣe ẹya atilẹyin okeerẹ julọ fun ransomware, lati aabo si esi ati imularada

Coveware nipasẹ Veeam yoo tẹsiwaju lati pese awọn iṣẹ esi iṣẹlẹ ikọlu cyber. Coveware yoo funni ni awọn oniwadi ati awọn agbara atunṣe…

23 Kẹrin 2024