Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kā Mockito atiestatīšanas metode atšķiras no ClearInvocations


Kā Mockito atiestatīšanas metode atšķiras no ClearInvocations


Mockito nodrošina divas metodes, kuras testēšanas laikā var izmantot, lai pārvaldītu izspēles stāvokli: `atiestatīt ()` un `clearinvocation ()`. Kaut arī abas metodes tiek izmantotas izspēles stāvokļa pārvaldīšanai, tās kalpo dažādiem mērķiem un tām ir izteikta ietekme uz izspēlēm.

Mockito `atiestatīšana ()` metode

`Atiestatīšana ()` metode Mockito tiek izmantota, lai pilnībā atiestatītu izspēles objektu. Tas nozīmē, ka tas ne tikai notīra piesaukšanas skaitu, bet arī noņem visu izspiešanu, kas ir iestatīta uz izspēles. Tas var būt problemātiski, jo tas prasa atkārtoti izspēli pēc tam, kad esat to atiestatījis, ja vēlaties saglabāt īpašu izturēšanos pret testiem. `Atiestatīšanas ()` izmantošana parasti tiek atturēta, jo tā var izraisīt sarežģītus un mazāk mērķtiecīgus testus. Ieteicams izvairīties no `atiestatīšanas ()` `, ja vien tas nav absolūti nepieciešams, jo tas var aizēnot jūsu testu nodomu un padarīt tos grūtāk saglabāt [1] [5] [7].

Mockito's ClearInvocations () `metode

Metode “ClearInvocations ()”, kas ieviesta Mockito 2.1, ļauj jums notīrīt izspēles piesaukšanas skaitu, neatiestatot tā strauji. Tas nozīmē, ka jūs varat turpināt izmantot tos pašus stumbri, vienlaikus nodrošinot, ka katrs tests sākas ar tīru šīfera attiecībā uz metodes piesaukšanu. Šī metode ir noderīga, ja jums ir jāpārbauda mijiedarbība stāvoklī vai, ja tiek izmantota atkarības injekcijas ietvars, taču tā joprojām būtu jāizmanto taupīgi. Parasti ieteicams izvairīties no `clearInvocation ()` lietošanas, ja vien tas nav nepieciešams, jo tas var arī sarežģīt testus, ja netiek domāts [1] [4] [9].

Galvenās atšķirības

- Stipbēšana: `atiestatīt ()` noņem visu stubbing, liekot jums atkārtoti izspiest izspēli, turpretī `clearinvocation ()` lapas ir neskartas.
- Ielūgumu skaits: abas metodes ir skaidras piesaukšanas skaits, bet `atiestatīšana ()` to dara kā daļu no pilnīgas atiestatīšanas, savukārt `clearinvocation ()` īpaši mērķē uz aicinājumu skaitu.
- Pārbaudes sarežģītība: abas metodes var izraisīt sarežģītākus testus, ja tās netiek rūpīgi izmantotas, bet `atiestatīšana ()` mēdz radīt vairāk problēmu, jo ir nepieciešams atkārtoti izspiest.

Rezumējot, lai gan abas metodes var izmantot, lai pārvaldītu izspēles stāvokli, `atiestatīšana ()` ir vairāk invazīvāka un parasti drosmīga, turpretī “clearinvocation ()` ir mērķtiecīgāka, bet tā joprojām ir jāizmanto saprātīgi, lai uzturētu tīras un koncentrētas pārbaudes.

Atsauces:
[1.]
[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.clearallcaches
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.clearinvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-correct-alternative-to-resetting-mock-fter-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/mock/discussions/842