logo

Mock vs. Stub vs. Spy

Mock

Mocky sú objekty, ktoré ukladajú volania metód. Označuje sa ako dynamické obaly pre závislosti používané v testoch. Používa sa na zaznamenávanie a overovanie interakcie medzi triedami Java. Model je známy ako najvýkonnejšia a najflexibilnejšia verzia testovacej dvojky. Používame metódu zosmiešňovania tzv zosmiešňovať () .

Hlavnou funkciou používania zosmiešňovaných objektov je, že poskytuje plnú kontrolu nad správaním zosmiešňovaných objektov. Falošné predmety sa zvyčajne používajú na overenie správania . Pojem správanie znamená kontrolovať správne metódy a cesty, ktoré sú aplikované na objekty.

Mocky sa väčšinou vytvárajú pomocou knižnice alebo zosmiešňujúceho rámca ako Mockito, JMock a EasyMock. Používa sa na testovanie širokej škály testov, kde stuby nestačia. Jednou zo základných funkcií mocku je, že si môžeme overiť, koľkokrát sa daná metóda volá.

Nasledujúci úryvok kódu ukazuje, ako používať mock().

 ToDoService doService = mock(ToDoService.class); 

Stub

Stub sú objekty, ktoré obsahujú preddefinované údaje a používajú ich na poskytovanie odpovedí počas testov. Inými slovami, stub je objekt, ktorý sa podobá skutočnému objektu s minimálnym počtom metód potrebných na test. Stuby sa používajú vtedy, keď nechceme použiť objekty, ktoré by dávali odpoveď so skutočnými dátami. Pahýľ sa označuje ako najľahšia a najstatickejšia verzia testu je dvojitá.

Hlavné funkcie stubov sú:

  • Vždy vráti preddefinovaný výstup bez ohľadu na vstup.
  • Môže sa použiť na to, aby sa podobal na databázové objekty.
  • Stub sa používajú na zníženie zložitosti, ktorá sa vyskytuje pri vytváraní skutočných objektov. Používajú sa hlavne na predvádzanie štátne overenie .

Špión

Špióni sú známi ako čiastočne zosmiešňované predmety . To znamená, že špión vytvára čiastočný objekt alebo polovičnú figurínu skutočného objektu tým, že napichne alebo sleduje skutočné objekty. Pri špionáži zostáva skutočný objekt nezmenený a my len špehujeme niektoré jeho špecifické metódy. Inými slovami, vezmeme existujúci (skutočný) objekt a nahradiť alebo špión len niektoré z jeho metód.

Špióni sú užitoční, keď máme veľkú triedu plnú metód a niektoré metódy chceme zosmiešňovať. V tomto scenári by sme mali uprednostňovať použitie špiónov pred zosmiešňovaním a útržkami. Volá skutočné správanie metódy, ak metódy nie sú zablokované.

V Mockito sa na vytváranie špionážnych objektov používa metóda spy(). Umožňuje nám volať normálne metódy skutočného objektu. Nasledujúci úryvok kódu ukazuje, ako používať metódu spy().

 List spyArrayList = spy(ArrayList.class); 

Rozdiel medzi Stub a Mock

Parametre Stub Mock
Dátový zdroj Zdroj údajov stubov je pevne zakódovaný. Zvyčajne je pevne spojený s testovacím balíkom. Údaje o modeloch sa nastavujú pomocou testov.
Vytvoril Útržky sú zvyčajne písané ručne a niektoré sú generované nástrojmi. Mocky sa zvyčajne vytvárajú pomocou knižnice tretích strán, ako sú Mockito, JMock a WireMock.
Použitie Stuby sa používajú hlavne pre jednoduché testovacie súpravy. Modely sa používajú hlavne pre veľké testovacie súpravy.
Grafické používateľské rozhranie (GUI) Stuby nemajú GUI. Posmešky majú GUI.

Nasleduje niekoľko rozdielov medzi falošným a špiónom:

Parametre Mock Špión
Použitie Makety sa používajú na vytvorenie úplne falošných alebo falošných objektov. Používa sa hlavne vo veľkých testovacích súpravách. Špióni sa používajú na vytváranie čiastočných alebo polovičných falošných objektov. Podobne ako falošní špióni sa používajú aj vo veľkých testovacích súpravách.
Predvolené správanie Pri používaní falošných objektov je predvolené správanie metód (keď nie sú zablokované) nerobiť nič (nevykonávať nič.) Pri použití špionážnych objektov je predvolené správanie metód (keď nie sú potlačené) skutočné správanie metódy.

V našich predchádzajúcich tutoriáloch sme diskutovali o niektorých príkladoch urážania, zosmiešňovania a špehovania. Pre lepšie pochopenie rozdielu medzi urážaním, zosmiešňovaním a špehovaním si prečítajte príklady.