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.
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.forClasseller@Captoroppretter en captor- Send
capture()inn iverify getValue()/getAllValues()leser de oppfangede dataene- Bruk captors for komplekse, internt bygde argumenter
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
- Egendefinerte svar og tilbakekall
- Mocking av statiske metoder og konstruktører
- Beste praksis for Mockito
- Fangst av argumenter med ArgumentCaptor