Testing i praksis: JUnit, Mockito og integrasjonstester · leksjon

Fangst av argumenter med ArgumentCaptor

Bruk Mockitos ArgumentCaptor til å fange opp og kontrollere de nøyaktige objektene som sendes til en mock i komplekse scenarier.

Leksjon 4 av 413 trinn

Fangst av argumenter med ArgumentCaptor er en gratis leksjon i Testing i praksis: JUnit, Mockito og integrasjonstester på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Testing i praksis: JUnit, Mockito og integrasjonstester, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Testing i praksis: JUnit, Mockito og integrasjonstester inneholder totalt 4 leksjoner.

Undersøk hva som ble sendt

Noen ganger er det ikke nok å kontrollere at en metode ble kalt. De må kontrollere det faktiske argumentet som koden bygde og sendte. Mockito's ArgumentCaptor henter denne verdien for inspeksjon.

Matchere kontra captors

Argumentmatchere som eq(...) kontrollerer inndata under verifisering. En captor registrerer i stedet argumentet, slik at De kan utføre grundige kontroller etterpå.

Opprette en captor

Deklarer en captor for typen De forventer å fange opp.

ArgumentCaptor<User> captor =
    ArgumentCaptor.forClass(User.class);

Fange opp under Verify

Send captorens capture() dit argumentet skulle stått inne i verify.

verify(repo).save(captor.capture());

Lese verdien

Hent det oppfangede objektet etter verifiseringen, og kontroller feltene i det.

User saved = captor.getValue();
assertEquals("Ada", saved.getName());

Fullstendig eksempel

Her bekrefter vi at tjenesten bygger riktig bruker før den lagrer den.

service.register("Ada", "ada@x.io");
verify(repo).save(captor.capture());
assertEquals("ada@x.io",
    captor.getValue().getEmail());

Fange opp flere kall

Hvis metoden ble kalt flere ganger, bruker De getAllValues() for å hente hvert oppfangede argument i riktig rekkefølge.

verify(repo, times(2)).save(captor.capture());
List<User> all = captor.getAllValues();

@Captor-annotasjonen

De kan deklarere captors som felter med @Captor når De bruker Mockito-utvidelsen, slik at mengden standardkode reduseres.

@Captor
ArgumentCaptor<User> captor;

Captor eller matcher?

Bruk en matcher for enkle likhetskontroller på kalletidspunktet. Velg en captor når argumentet er komplekst, bygges internt eller trenger flere kontroller.

Unngå overbruk

Captors kobler tester til interne detaljer i konstruksjonen. Bruk dem for genuint komplekse argumenter, ikke for alt, slik at testene forblir robuste.

Hvorfor det er viktig

Captors lar Dem kontrollere de nøyaktige dataene koden sender til samarbeidende komponenter, og avdekker subtile feil i tilordning eller transformasjon.

Rask kontroll

Hvordan henter De det oppfangede argumentet etter verifisering?

Oppsummering

De har lært å fange opp argumenter:

  • ArgumentCaptor.forClass eller @Captor oppretter en captor
  • Send capture() inn i verify
  • getValue() / getAllValues() leser de oppfangede dataene
  • Bruk captors for komplekse, internt bygde argumenter
Gratis å komme i gang

Lær deg Testing i praksis: JUnit, Mockito og integrasjonstester 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
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Fangst av argumenter med ArgumentCaptor» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Testing i praksis: JUnit, Mockito og integrasjonstester, inkludert «Fangst av argumenter med ArgumentCaptor», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Testing i praksis: JUnit, Mockito og integrasjonstester inneholder totalt 4 leksjoner.

Hva lærer jeg i «Fangst av argumenter med ArgumentCaptor»?

Bruk Mockitos ArgumentCaptor til å fange opp og kontrollere de nøyaktige objektene som sendes til en mock i komplekse scenarier. Du øver på Testing i praksis: JUnit, Mockito og integrasjonstester 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 Testing i praksis: JUnit, Mockito og integrasjonstester?

Ingen tidligere erfaring er nødvendig. Testing i praksis: JUnit, Mockito og integrasjonstester 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 4 av 4.

Hvor lang tid tar leksjonen «Fangst av argumenter med ArgumentCaptor»?

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 Testing i praksis: JUnit, Mockito og integrasjonstester-leksjonen?

Ja. Alle Testing i praksis: JUnit, Mockito og integrasjonstester-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

  1. Egendefinerte svar og tilbakekall
  2. Mocking av statiske metoder og konstruktører
  3. Beste praksis for Mockito
  4. Fangst av argumenter med ArgumentCaptor
← Tilbake til Testing i praksis: JUnit, Mockito og integrasjonstester