Mockito ponuja dve metodi, ki ju je mogoče uporabiti za upravljanje stanja posmeha med testiranjem: `reset ()` in `clearInvocations ()`. Medtem ko se obe metodi uporabljata za upravljanje stanja posmeha, služita različnim namenom in imata različne učinke na posmeh.
Mockito -jeva metoda reset () `
Metoda reset () `v Mockito se uporablja za v celoti ponastavitev posmehljivega predmeta. To pomeni, da ne samo razčisti števila priklic, ampak tudi odstrani vsako trpljenje, ki je postavljeno na posmeh. To je lahko problematično, saj zahteva, da se po ponastavitvi ponovno uveljavite, če želite ohraniti določeno vedenje za svoje teste. Uporaba `reset ()` se na splošno odvrača, ker lahko privede do zapletenih in manj osredotočenih testov. Svetujemo, da se izognete uporabi `Reset ()`, razen če je to nujno potrebno, saj lahko zasenči namero vaših testov in jih oteži vzdrževanje [1] [5] [7].
Mockito's `clearInvocations ()` metoda
Metoda `clearInpocations ()`, uvedena v Mockito 2.1, vam omogoča, da očistite število priklic posmeha, ne da bi ponastavili njegovo trpljenje. To pomeni, da lahko še naprej uporabljate iste škrbine, hkrati pa zagotavljate, da se vsak test začne s čistim skrilavcem glede nagovorov metod. Ta metoda je uporabna, če morate preveriti interakcije v državnem scenariju ali pri uporabi okvirov vbrizgavanja odvisnosti, vendar jo je treba še vedno zmerno uporabljati. Na splošno je priporočljivo, da se izognete uporabi `clearInvocations ()`, če je potrebno, saj lahko tudi zaplete teste, če se ne uporabljate premišljeno [1] [4] [9].
Ključne razlike
- Stubbing: `Reset ()` Odstrani vse trmanje, kar zahteva, da se posmehujete, medtem ko `clearInpocations ()` listi, ki trpinčijo nedotaknjeni.
- Število priklic: Obe metodi očistijo priklic, vendar `reseset ()` to naredi kot del popolne ponastavitve, medtem ko `clearInvocations ()` posebej ciljajo na število priklic.
- Preskusna kompleksnost: Obe metodi lahko privedeta do bolj zapletenih testov, če se ne uporabljata skrbno, vendar "reseset ()" ponavadi povzroči več težav zaradi potrebe po ponovnem oblikovanju posmeha.
Če povzamemo, medtem ko se obe metodi lahko uporabljata za upravljanje stanja posmeha, je `Reset ()` bolj invazivna in na splošno odvrača, medtem ko je `clearInpocations ()` bolj usmerjena, vendar jo je treba še vedno obravnavati za vzdrževanje čistih in osredotočenih testov.
Navedbe:[1] https://softwareengineering.stackexchange.com/Questions/188299/is-this-an-approise-use-of-mockitos-reset-method
[2] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearinvocations
[3] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.cleralcaches
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.clearinvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-corect-alternative-toresetting-a-mock-after-setup-in-mockito
[6] https://reflectoring.io/Clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does-verify-method-reboot-number-of-times
[8] https://javadoc.io/doc/org.mockito/mockito-core/2.25.1/org/mockito/mockito.html
[9] https://wesome.org/mockito-3-clear-invocations
[10] https://github.com/mockk/mockk/discussions/842