logo

Mock vs. Stub vs. Spy

Falsk

Mockar är de objekt som lagrar metodanrop. Det hänvisade till som de dynamiska omslagen för beroenden som används i testerna. Den används för att registrera och verifiera interaktionen mellan Java-klasserna. En hån är känd som den mest kraftfulla och flexibla versionen av testdubbel. Vi använder en metod för att håna kallas falsk() .

Huvudfunktionen med att använda hån är att det ger full kontroll över beteendet hos de hånade objekten. De skenobjekt används vanligtvis för beteendeverifiering . Termen beteende betyder att kontrollera de korrekta metoderna och sökvägarna som tillämpas på objekten.

Mockar skapas oftast genom att använda ett bibliotek eller ett hånande ramverk som Mockito, JMock och EasyMock. Den används för att testa en stor uppsättning tester där stubbar inte räcker till. En av de väsentliga funktionerna i mock är att vi kan verifiera hur många gånger en given metod anropas.

gjutsnöre som int

Följande kodsnutt visar hur man använder mock().

linux mint cinnamon vs mate
 ToDoService doService = mock(ToDoService.class); 

Stump

Stubbar är de objekt som innehåller fördefinierade data och använder dem för att ge svar under tester. Med andra ord är en stubb ett objekt som liknar ett verkligt objekt med det minsta antal metoder som behövs för ett test. Stubbar används när vi inte vill använda objekt som skulle ge ett svar med riktiga data. En stubb kallas den lättaste, och den mest statiska versionen av testet fördubblas.

Stubbarnas huvudfunktioner är:

  • Den returnerar alltid den fördefinierade utgången oavsett ingången.
  • Den kan användas för att likna databasobjekten.
  • Stubbar används för att minska komplexiteten som uppstår under skapandet av de verkliga objekten. De används främst för att uppträda statlig verifikation .

Spionera

Spioner är kända som delvis hånfulla föremål . Det betyder att spion skapar ett partiellt föremål eller en halv dummy av det verkliga föremålet genom att stubba eller spionera på de riktiga. Vid spioneri förblir det verkliga objektet oförändrat, och vi spionerar bara på några specifika metoder för det. Med andra ord tar vi det befintliga (verkliga) objektet och byta ut eller spionera bara några av dess metoder.

hashmap

Spioner är användbara när vi har en enorm klass full av metoder, och vi vill håna vissa metoder. I det här scenariot bör vi föredra att använda spioner snarare än hån och stubbar. Det kallar det verkliga metoden beteende, om metoderna inte är stubbade.

I Mockito används metoden spy() för att skapa spionobjekt. Det tillåter oss att kalla det verkliga objektets normala metoder. Följande kodsnutt visar hur du använder metoden spy().

 List spyArrayList = spy(ArrayList.class); 

Skillnaden mellan Stub och Mock

Parametrar Stump Falsk
Datakälla Stubbarnas datakälla är hårdkodad. Den är vanligtvis tätt kopplad till testsviten. Data om hånar ställs in av testerna.
Skapad av Stubbar är vanligtvis handskrivna, och en del genereras av verktyg. Mockar skapas vanligtvis genom att använda tredjepartsbiblioteket som Mockito, JMock och WireMock.
Användande Stubbar används främst för enkla testsviter. Mockar används främst för stora testsviter.
Grafiskt användargränssnitt (GUI) Stubbar har inget GUI. Mockar har ett GUI.

Följande är några skillnader mellan hån och spion:

Parametrar Falsk Spionera
Användande Hån används för att skapa helt skenbara eller dummyobjekt. Det används främst i stora testsviter. Spioner används för att skapa partiella eller halva skenobjekt. Precis som hån används spioner också i stora testsviter.
Standardbeteende När du använder skenobjekt är standardbeteendet för metoder (när de inte är stubbade) gör ingenting (utför ingenting.) När du använder spionobjekt är standardbeteendet för metoderna (när de inte är stubbade) det verkliga metodbeteendet.

I våra tidigare handledningar har vi diskuterat några exempel på stubbning, hån och spioneri. Gå igenom exemplen för att bättre förstå skillnaden mellan stubbning, hån och spionage.