Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ako sa líši metóda resetovania Mockito od ClearInvocations


Ako sa líši metóda resetovania Mockito od ClearInvocations


Mockito poskytuje dve metódy, ktoré sa dajú použiť na správu stavu falošných testov počas testovania: `reset ()` a `clearInvocations ()`. Aj keď sa obe metódy používajú na riadenie falošného stavu, slúžia rôznym účelom a majú zreteľné účinky na falošné.

Mockito's `reset ()` Metóda

Metóda `reset ()` v Mockito sa používa na úplné resetovanie falošného objektu. To znamená, že nielenže vymaže počty vyvolania, ale tiež odstraňuje akékoľvek strhovanie, ktoré bolo nastavené na falošné. To môže byť problematické, pretože si vyžaduje, aby ste po resetovaní po resetovaní opätovne založili, ak si chcete zachovať konkrétne správanie pre svoje testy. Použitie `reset ()` sa vo všeobecnosti odrádza, pretože môže viesť k zložitým a menej zameraným testom. Odporúča sa vyhnúť sa použitiu `reset ()`, pokiaľ to nie je absolútne nevyhnutné, pretože to môže zakrývať zámer vašich testov a sťažovať ich udržiavanie [1] [5] [7].

Mockito's `ClearInvocations ()` Metóda

Metóda `clearInvocations ()`, zavedená v Mockito 2.1, vám umožňuje vyčistiť počty vyvolania falošnej simulovania bez resetovania jeho strhbingu. To znamená, že môžete naďalej používať rovnaké pahýly a zároveň zabezpečiť, aby sa každý test začal čistým bridlicom, pokiaľ ide o vyvolávanie metód. Táto metóda je užitočná, keď potrebujete overiť interakcie v stavovom scenári alebo pri použití rámcov injekcie závislosti, ale stále by sa malo používať striedmo. Všeobecne sa odporúča vyhnúť sa použitiu „clearInvocations ()“, pokiaľ to nie je potrebné, pretože môže komplikovať aj testy, ak sa nepoužíva dôkladne [1] [4] [9].

Kľúčové rozdiely

- Stubbing: `Reset ()` Odstraňuje všetky strubovanie, čo si vyžaduje, aby ste znovu založili falošný, zatiaľ čo „clearInvocations ()` listy strhbujú neporušené.
- Počty vyvolania: Obe metódy vymažú počty vyvolania, ale `reset ()` to robí ako súčasť úplného resetovania, zatiaľ čo „clearInvocations ()` sa špecificky zameriava na počty vyvolania.
- Zložitosť testu: Obe metódy môžu viesť k zložitejším testom, ak sa nepoužívajú opatrne, ale `reset ()` majú tendenciu spôsobiť viac problémov z dôvodu potreby opätovného zachytenia zosmiešňovaní.

Stručne povedané, zatiaľ čo obidve metódy sa môžu použiť na správu stavu falošného stavu, `reset ()` je invazívnejší a vo všeobecnosti odradený, zatiaľ čo „ClearInvocations ()` je viac zameraný, ale mal by sa stále používať na udržanie čistých a zameraných testov.

Citácie:
[1] https://softwareEngineering.stackexchange.com/questions/188299/is- This-an-appppppr Afler-use-fus-mockitos-reset-methody
[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.clearalralCaches
[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-a-mock-after-after-after-apep-in-in-mockoto
[6] https://reflectoring.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/Mockito-der--Verify-method-reboot-noboot-mumber-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