logo

Mock vs. Stub vs. Spy

håne

Spot er objektene som lagrer metodekall. Det refereres til som de dynamiske innpakningene for avhengigheter som brukes i testene. Den brukes til å registrere og verifisere interaksjonen mellom Java-klassene. En mock er kjent som den kraftigste og mest fleksible versjonen av testdoblene. Vi bruker en metode for mocking kalles håne() .

Hovedfunksjonen til å bruke mocks er at det gir full kontroll over oppførselen til de hånte objektene. De falske objektene brukes vanligvis til atferdsverifisering . Begrepet atferd betyr å sjekke de riktige metodene og banene som brukes på objektene.

lykke til

Håner er for det meste laget ved å bruke et bibliotek eller et hånlig rammeverk som Mockito, JMock og EasyMock. Den brukes til å teste en stor pakke med tester der stubber ikke er tilstrekkelige. En av de essensielle funksjonene til mock er at vi kan bekrefte hvor mange ganger en gitt metode kalles.

Følgende kodebit viser hvordan du bruker mock().

 ToDoService doService = mock(ToDoService.class); 

Stubb

Stubber er objektene som inneholder forhåndsdefinerte data og bruker dem til å gi svar under tester. Med andre ord, en stubbe er et objekt som ligner et virkelig objekt med minimum antall metoder som trengs for en test. Stubber brukes når vi ikke ønsker å bruke objekter som vil gi et svar med ekte data. En stubbe omtales som den letteste, og den mest statiske versjonen av testen dobles.

Hovedfunksjonene til stubbene er:

autocad stretch-kommando
  • Den returnerer alltid den forhåndsdefinerte utgangen uavhengig av inngangen.
  • Den kan brukes til å ligne databaseobjektene.
  • Stubber brukes til å redusere kompleksiteten som oppstår under opprettelsen av de virkelige objektene. De brukes hovedsakelig til å utføre tilstandsbekreftelse .

Spion

Spioner er kjent som delvis hånlige gjenstander . Det betyr at spion lager et delvis objekt eller en halv dummy av det virkelige objektet ved å stubbe eller spionere de ekte. Ved spionering forblir det virkelige objektet uendret, og vi spionerer bare på noen spesifikke metoder for det. Med andre ord tar vi det eksisterende (virkelige) objektet og erstatte eller spion bare noen av metodene.

Spioner er nyttige når vi har en stor klasse full av metoder, og vi ønsker å håne visse metoder. I dette scenariet bør vi foretrekke å bruke spioner fremfor hån og stubber. Det kaller den virkelige metoden atferd, hvis metodene ikke er stubbet.

I Mockito brukes spy()-metoden for å lage spionobjekter. Det lar oss kalle de normale metodene til det virkelige objektet. Følgende kodebit viser hvordan du bruker spy()-metoden.

 List spyArrayList = spy(ArrayList.class); 

Forskjellen mellom Stub og Mock

Parametere Stubb håne
Datakilde Datakilden til stubber er hardkodet. Den er vanligvis tett koblet til testpakken. Data på mocks er satt opp av testene.
Laget av Stubber er vanligvis håndskrevne, og noen er generert av verktøy. Håner lages vanligvis ved å bruke tredjepartsbiblioteket som Mockito, JMock og WireMock.
Bruk Stubber brukes hovedsakelig til enkle testsuiter. Spot brukes hovedsakelig til store testsuiter.
Grafisk brukergrensesnitt (GUI) Stubber har ikke en GUI. Mocks har en GUI.

Følgende er noen forskjeller mellom hån og spion:

Parametere håne Spion
Bruk Spot brukes til å lage fullstendig falske eller dummy-objekter. Den brukes hovedsakelig i store testsuiter. Spioner brukes til å lage delvise eller halve falske objekter. Som hån, brukes også spioner i store testsuiter.
Standard oppførsel Når du bruker falske objekter, er standardoppførselen til metoder (når de ikke er stubbet) gjør ingenting (utfører ingenting.) Når du bruker spionobjekter, er standardoppførselen til metodene (når den ikke er stubbet) den virkelige metodeoppførselen.

I våre tidligere opplæringsprogrammer har vi diskutert noen eksempler på stubbing, hån og spionasje. For bedre å forstå forskjellen mellom stubbing, hån og spionasje, gå gjennom eksemplene.