Tietolähteet parametrisoiduille testeille
Suorittakaa sama testi useilla syötteillä dataProvider-ominaisuuden avulla.
Tietolähteet parametrisoiduille testeille on ilmainen PHP Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu PHP Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. PHP Academy-kurssilla on yhteensä 4 oppituntia.
Mitä data providerit ovat?
Data provider on metodi, joka palauttaa joukon testisyötteitä. PHPUnit kutsuu testimetodia kerran kutakin aineistoa kohden, joten useiden syöteyhdistelmien testaaminen onnistuu ilman toistuvaa koodia.
Perustason data provider
Data provider palauttaa kaksiulotteisen taulukon. Jokainen alitaulukko vastaa yhtä testimetodin kutsua.
<?php
public static function additionProvider(): array
{
return [
"two positives" => [2, 3, 5],
"negative" => [-1, 1, 0],
"zeros" => [0, 0, 0],
];
}Linkittäminen attribuutilla (PHPUnit 10+)
Linkittäkää testi provider-metodiinsa #[DataProvider]-attribuutilla.
<?php
use PHPUnit\Framework\Attributes\DataProvider;
#[DataProvider("additionProvider")]
public function test_add(int $a, int $b, int $expected): void
{
$this->assertSame($expected, (new Calculator())->add($a, $b));
}Nimetyt aineistot
Käyttäkää provider-taulukossa assosiatiivisia avaimia antaaksenne kullekin aineistolle kuvaavan nimen — nimet näkyvät testitulosteessa.
<?php
public static function emailProvider(): array
{
return [
"valid email" => ["user@example.com", true],
"missing @" => ["userexample.com", false],
"missing domain" => ["user@", false],
"international" => ["用户@例子.com", true],
];
}Generaattorien palauttaminen
Providerit voivat palauttaa taulukon sijaan Generator-olion ja luoda aineistoja laiskasti — tämä on hyödyllistä erittäin suurilla aineistoilla.
<?php
public static function largeProvider(): Generator
{
for ($i = 1; $i <= 1000; $i++) {
yield "case $i" => [$i, $i * 2];
}
}Ulkoiset tietolähteet
Ladatkaa testidata CSV-tiedostosta, JSON-tiedostosta tai tietokannasta provider-metodin sisällä, jotta testit voidaan suorittaa tosielämän datalla.
<?php
public static function csvProvider(): array
{
$rows = array_map("str_getcsv", file("tests/fixtures/data.csv"));
return array_map(fn($r) => [$r[0], (int)$r[1], (int)$r[2]], $rows);
}Useat data providerit
Testimetodi voi viitata useisiin providereihin pinoamalla attribuutteja.
Providerin on oltava staattinen
Data provider -metodit on määriteltävä static-metodeiksi, koska PHPUnit kutsuu niitä ennen testiluokan ilmentämistä.
Reunatapausten testaaminen
Käyttäkää providereita kattamaan järjestelmällisesti nolla, negatiiviset luvut, tyhjät merkkijonot, null ja suurin kokonaisluku — kaikkialla, missä reunatapaukset voivat paljastaa virheitä.
Data providerin tuloste
Epäonnistumisissa näytetään aineiston nimi: CalculatorTest::test_add with data set "negative" ([-1, 1, 0]) — näin näette helposti, mikä tapaus epäonnistui.
Providerien yhdistäminen setUp-metodiin
Data providerit ja setUp voidaan yhdistää. setUp suoritetaan ennen jokaista iteraatiota, joten jokainen aineisto saa uuden testattavan olion.
Suorituskykynäkökohdat
Providerit suoritetaan testijoukon lataamisen aikana. Välttäkää kalliita toimenpiteitä, kuten HTTP-kutsuja ja tietokantakyselyitä, providereissa — suosikaa factoryja ja fixtureja.
Yhteenveto
Data providerit poistavat testikoodin toistamisen tarpeen. Käyttäkää assosiatiivisia avaimia kuvaavissa epäonnistumisviesteissä. Määritelkää providerit static-metodeiksi ja linkittäkää ne #[DataProvider]-attribuutilla.
Pikatarkistus
Mikä näkyvyysmäärite data providerilla on oltava?
Opi PHP tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 49
- Oppitunnit
- 195
Usein kysytyt kysymykset
Onko oppitunti ”Tietolähteet parametrisoiduille testeille” ilmainen?
Kyllä – oppitunnin ”Tietolähteet parametrisoiduille testeille” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko PHP Academy-kurssin, päivitä CoddyKit PROhon. PHP Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Tietolähteet parametrisoiduille testeille”?
Suorittakaa sama testi useilla syötteillä dataProvider-ominaisuuden avulla. Harjoittelet PHP Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni PHP Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin PHP Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Tietolähteet parametrisoiduille testeille”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä PHP Academy-oppitunnilla?
Kyllä. Jokainen PHP Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- PHPUnitin käyttöönotto ja ensimmäinen testi
- Väitteet ja testimetodit
- Tietolähteet parametrisoiduille testeille
- Riippuvuuksien mallintaminen PHPUnitilla