logo

Mock vs. Stub vs. Spy

Mock

Spot er de objekter, der gemmer metodekald. Det omtalte som de dynamiske indpakninger for afhængigheder, der blev brugt i testene. Det bruges til at registrere og verificere interaktionen mellem Java-klasserne. En hån er kendt som den mest kraftfulde og fleksible version af testdoblingen. Vi bruger en metode til at håne kaldes håne() .

Hovedfunktionen ved at bruge mocks er, at det giver fuld kontrol over de hånede objekters adfærd. De falske objekter bruges generelt til adfærdsverifikation . Udtrykket adfærd betyder at kontrollere de korrekte metoder og stier, der anvendes på objekterne.

installering af brænder

Håner er for det meste skabt ved at bruge et bibliotek eller en hånende ramme som Mockito, JMock og EasyMock. Det bruges til at teste en lang række tests, hvor stubs ikke er tilstrækkelige. En af de væsentlige funktioner ved mock er, at vi kan verificere, hvor mange gange en given metode kaldes.

Følgende kodestykke viser, hvordan man bruger mock().

 ToDoService doService = mock(ToDoService.class); 

Stub

Stubber er de objekter, der indeholder foruddefinerede data og bruger dem til at give svar under test. Med andre ord er en stub et objekt, der ligner et rigtigt objekt med det mindste antal metoder, der er nødvendige for en test. Stubber bruges, når vi ikke ønsker at bruge objekter, der ville give et svar med rigtige data. En stub omtales som den letteste, og den mest statiske version af testen fordobles.

Stubbenes hovedfunktioner er:

jsp javatpoint
  • Den returnerer altid det foruddefinerede output uanset input.
  • Det kan bruges til at ligne databaseobjekterne.
  • Stubs bruges til at reducere kompleksiteten, der opstår under skabelsen af ​​de rigtige objekter. De bruges hovedsageligt til at udføre statslig verifikation .

Spion

Spioner er kendt som delvist hånende genstande . Det betyder, at spion skaber en delvis genstand eller en halv dummy af den virkelige genstand ved at stubbe eller spionere de rigtige. Ved spionage forbliver det virkelige objekt uændret, og vi udspionerer bare nogle specifikke metoder til det. Med andre ord tager vi det eksisterende (virkelige) objekt og erstatte eller spion kun nogle af dens metoder.

Spioner er nyttige, når vi har en stor klasse fuld af metoder, og vi ønsker at håne visse metoder. I dette scenarie bør vi foretrække at bruge spioner frem for håner og stubbe. Det kalder den rigtige metode adfærd, hvis metoderne ikke er stubbede.

I Mockito bruges spy()-metoden til at skabe spionobjekter. Det giver os mulighed for at kalde det rigtige objekts normale metoder. Følgende kodestykke viser, hvordan man bruger spy() metoden.

 List spyArrayList = spy(ArrayList.class); 

Forskellen mellem Stub og Mock

Parametre Stub Mock
Datakilde Datakilden til stubs er hårdkodet. Det er normalt tæt koblet til testpakken. Data om mocks er sat op af testene.
Lavet af Stubber er normalt håndskrevne, og nogle er genereret af værktøjer. Håner oprettes normalt ved at bruge tredjepartsbiblioteket såsom Mockito, JMock og WireMock.
Brug Stubs bruges hovedsageligt til simple testsuiter. Spotter bruges hovedsageligt til store testsuiter.
Grafisk brugergrænseflade (GUI) Stubs har ikke en GUI. Mocks har en GUI.

Følgende er nogle forskelle mellem mock og spion:

Parametre Mock Spion
Brug Håner bruges til at skabe helt hånte eller dummy-objekter. Det bruges hovedsageligt i store testsuiter. Spioner bruges til at skabe delvise eller halve falske objekter. Ligesom mock bruges spioner også i store testsuiter.
Standardadfærd Når du bruger falske objekter, er standardadfærden for metoder (når de ikke er stumpet) gør ingenting (udfører ingenting). Når du bruger spionobjekter, er standardadfærden for metoderne (når de ikke er stubbet) den rigtige metodeadfærd.

I vores tidligere tutorials har vi diskuteret nogle eksempler på stubbing, hån og spionage. For bedre at forstå forskellen mellem stubbing, hån og spionage, gå gennem eksemplerne.