Dataleverandører for parametriserte tester
Kjør samme test med flere inndata ved hjelp av dataProvider.
Dataleverandører for parametriserte tester er en gratis leksjon i PHP Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i PHP Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i PHP Academy inneholder totalt 4 leksjoner.
Hva er data providers?
En data provider er en metode som returnerer et sett med testinndata. PHPUnit kaller testmetoden én gang per datasett, slik at De enkelt kan teste mange kombinasjoner av inndata uten å gjenta kode.
Grunnleggende data provider
Data provideren returnerer en todimensjonal array. Hver underarray utgjør ett kall til testmetoden.
<?php
public static function additionProvider(): array
{
return [
"two positives" => [2, 3, 5],
"negative" => [-1, 1, 0],
"zeros" => [0, 0, 0],
];
}Koble til med attributt (PHPUnit 10+)
Bruk attributtet #[DataProvider] for å koble en test til data provideren.
<?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));
}Navngitte datasett
Bruk assosiative nøkler i provider-arrayen for å gi hvert datasett et beskrivende navn – navnene vises i testresultatet.
<?php
public static function emailProvider(): array
{
return [
"valid email" => ["user@example.com", true],
"missing @" => ["userexample.com", false],
"missing domain" => ["user@", false],
"international" => ["用户@例子.com", true],
];
}Returnere generatorer
Data providers kan returnere en Generator i stedet for en array for å generere datasett lat – nyttig for svært store datasett.
<?php
public static function largeProvider(): Generator
{
for ($i = 1; $i <= 1000; $i++) {
yield "case $i" => [$i, $i * 2];
}
}Eksterne datakilder
Last inn testdata fra CSV, JSON eller en database i data provider-metoden for å kjøre tester med data fra virkeligheten.
<?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);
}Flere data providers
En testmetode kan referere til flere data providers ved å plassere attributter etter hverandre.
Provider må være statisk
Data provider-metoder må deklareres som static fordi PHPUnit kaller dem før testklassen instantieres.
Teste grensetilfeller
Bruk data providers til systematisk å dekke null, negative tall, tomme strenger, null-verdier og maksimal heltallsverdi – overalt der grensetilfeller kan avdekke feil.
Resultat fra data provider
Feil viser navnet på datasettet: CalculatorTest::test_add with data set "negative" ([-1, 1, 0]) – slik blir det enkelt å finne ut hvilket tilfelle som mislyktes.
Kombinere data providers med setUp
Data providers og setUp kan kombineres. setUp kjøres før hver iterasjon, slik at hvert datasett får et nytt objekt som testes.
Ytelseshensyn
Data providers kjøres når testpakken lastes inn. Unngå kostbare operasjoner (HTTP-kall og databasespørringer) i data providers – bruk heller factories og fixtures.
Sammendrag
Data providers eliminerer duplisering av tester. Bruk assosiative nøkler for beskrivende feilmeldinger. Merk data providers som static, og koble dem til med attributtet #[DataProvider].
Kunnskapssjekk
Hvilken synlighetsmodifikator må en data provider ha?
Lær deg PHP med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 49
- Leksjoner
- 195
Ofte stilte spørsmål
Er leksjonen «Dataleverandører for parametriserte tester» gratis?
Ja – hele teksten i «Dataleverandører for parametriserte tester» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av PHP Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i PHP Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Dataleverandører for parametriserte tester»?
Kjør samme test med flere inndata ved hjelp av dataProvider. Du øver på PHP Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med PHP Academy?
Ingen tidligere erfaring er nødvendig. PHP Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Dataleverandører for parametriserte tester»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne PHP Academy-leksjonen?
Ja. Alle PHP Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Sette opp PHPUnit og skrive den første testen
- Påstander og testmetoder
- Dataleverandører for parametriserte tester
- Mocking av avhengigheter med PHPUnit