Mockito leverer to metoder, der kan bruges til at styre staten med spot under test: `nulstilling ()` og `clearInvocations ()`. Mens begge metoder bruges til at styre mock -tilstand, tjener de forskellige formål og har forskellige effekter på mocks.
Mockitos `nulstilling ()` metode
Metoden `nulstilling ()` i Mockito bruges til at nulstille et mock -objekt helt. Dette betyder, at det ikke kun rydder påkaldstællingerne, men fjerner også enhver stubbing, der er sat på mock. Dette kan være problematisk, fordi det kræver, at du stopper spottet igen efter at have nulstillet den, hvis du vil opretholde specifik opførsel til dine test. Brugen af `nulstilling ()` er generelt afskrækket, fordi det kan føre til komplekse og mindre fokuserede tests. Det anbefales at undgå at bruge `nulstilling ()` medmindre det er absolut nødvendigt, da det kan skjule intentionen med dine test og gøre dem sværere at opretholde [1] [5] [7].
Mockitos `clearInvocations ()` metode
Metoden `clearInvocations ()`, der blev introduceret i Mockito 2.1, giver dig mulighed for at rydde påkaldstællingerne for en spot uden at nulstille dens stubbing. Dette betyder, at du kan fortsætte med at bruge de samme stubber, samtidig med at du sikrer, at hver test starter med en ren skifer med hensyn til metodeinvokationer. Denne metode er nyttig, når du har brug for at verificere interaktioner i et statligt scenarie eller når du bruger afhængighedsinjektionsrammer, men den skal stadig bruges sparsomt. Det anbefales generelt at undgå at bruge `clearInvocations ()` medmindre det er nødvendigt, da det også kan komplicere test, hvis de ikke bruges tankevækkende [1] [4] [9].
Nøgleforskelle
- stubbing: `nulstilling ()` fjerner al stubbing, hvilket kræver, at du stubber mock, hvorimod `clearInvocations ()` efterlader stubbing intakt.
- Tilkaldelsestællinger: Begge metoder rydder påkaldstællinger, men `nulstilling ()` gør det som en del af en fuld nulstilling, mens `clearInvocations ()` specifikt er målrettet modernedskabstællinger.
- Testkompleksitet: Begge metoder kan føre til mere komplekse tests, hvis de ikke bruges omhyggeligt, men `nulstilling ()` har en tendens til at forårsage flere problemer på grund af behovet for at stubbe.
Sammenfattende, mens begge metoder kan bruges til at styre mock -tilstand, er `nulstilling ()` mere invasiv og generelt afskrækket, mens `clearInvocations ()` er mere målrettet, men bør stadig bruges med omtanke til at opretholde rene og fokuserede tests.
Citater:)
[2] https://www.lambdatest.com/automation-test-advisor/selenium/metods/org.mockito.internal.mockitocore.clearinvocations
[3] https://www.lambdatest.com/automation-test-advisor/selenium/Methods/org.mockito.internal.mockitocore.clearallcaches
[4] https://www.lambdatest.com/automation-test-advisor/selenium/metods/org.mockito.mockito.clearinvocations
)
[6] https://reflectoring.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does-verify-method-root-number-of-times
[8] https://javadoc.io/doc/org.mockito/mockito-core/2.25.1/org/mockito/mockito.html
[9] https://was.org/mockito-3-clear-invocations
[10] https://github.com/mockk/mockk/discussioner/842