logo

Mock vs Stub vs Spy

Burla

Els simulacres són els objectes que emmagatzemen les trucades de mètodes. Es coneix com els embolcalls dinàmics de dependències utilitzats a les proves. S'utilitza per registrar i verificar la interacció entre les classes Java. Una simulació es coneix com la versió més potent i flexible dels dobles de prova. Utilitzem un mètode de burla que es diu burla () .

La funció principal de l'ús de mocks és que ofereix un control total sobre el comportament dels objectes burlats. Els objectes simulats s'utilitzen generalment verificació del comportament . El terme comportament significa comprovar els mètodes i camins correctes que s'apliquen als objectes.

Els simulacres es creen majoritàriament utilitzant una biblioteca o un marc de burla com Mockito, JMock i EasyMock. S'utilitza per provar un gran conjunt de proves on els talons no són suficients. Una de les funcions essencials de mock és que podem comprovar quantes vegades s'anomena un mètode determinat.

El fragment de codi següent mostra com utilitzar mock().

 ToDoService doService = mock(ToDoService.class); 

taló

Els talons són els objectes que contenen dades predefinides i les utilitzen per donar respostes durant les proves. En altres paraules, un taló és un objecte que s'assembla a un objecte real amb el nombre mínim de mètodes necessaris per a una prova. Els talons s'utilitzen quan no volem utilitzar objectes que donen una resposta amb dades reals. Un taló es coneix com el més lleuger i la versió més estàtica de la prova es duplica.

Les principals funcions dels talons són:

  • Sempre retorna la sortida predefinida independentment de l'entrada.
  • Es pot utilitzar per semblar-se als objectes de la base de dades.
  • Els talons s'utilitzen per reduir les complexitats que es produeixen durant la creació dels objectes reals. S'utilitzen principalment per actuar verificació de l'estat .

Espia

Els espies són coneguts com objectes parcialment burlats . Vol dir que l'espia crea un objecte parcial o una meitat maniquí de l'objecte real enganxant o espiant els reals. En l'espionatge, l'objecte real es manté sense canvis i només n'espiem alguns mètodes específics. En altres paraules, prenem l'objecte (real) existent i substituir o espia només alguns dels seus mètodes.

taula en reacció

Els espies són útils quan tenim una classe enorme plena de mètodes i volem burlar-nos de certs mètodes. En aquest escenari, hauríem de preferir utilitzar espies en lloc de burles i talons. Crida el comportament del mètode real, si els mètodes no estan interromputs.

A Mockito, el mètode spy() s'utilitza per crear objectes espia. Ens permet anomenar els mètodes normals de l'objecte real. El fragment de codi següent mostra com utilitzar el mètode spy().

 List spyArrayList = spy(ArrayList.class); 

Diferència entre Stub i Mock

Paràmetres taló Burla
Font de dades La font de dades dels talons està codificada en dur. Normalment està estretament vinculat a la suite de proves. Les dades sobre maquetes es configuren mitjançant les proves.
Creat per Els talons solen ser escrits a mà i alguns són generats per eines. Els simulacres es creen normalment utilitzant la biblioteca de tercers com ara Mockito, JMock i WireMock.
Ús Els stubs s'utilitzen principalment per a conjunts de proves simples. Els simulacres s'utilitzen principalment per a grans suites de proves.
Interfície d'usuari gràfic (GUI) Els talons no tenen una GUI. Els mocks tenen una GUI.

A continuació es mostren algunes diferències entre el simulacre i l'espia:

Paràmetres Burla Espia
Ús Els simulacres s'utilitzen per crear objectes totalment simulats o simulats. S'utilitza principalment en grans suites de proves. Els espies s'utilitzen per crear objectes simulats parcials o mitjans. Com la simulació, els espies també s'utilitzen en grans suites de proves.
Comportament per defecte Quan s'utilitzen objectes simulats, el comportament predeterminat dels mètodes (quan no s'estén) és no fer res (no realitza res). Quan s'utilitzen objectes espia, el comportament predeterminat dels mètodes (quan no s'estan) és el comportament del mètode real.

En els nostres tutorials anteriors, hem comentat alguns exemples d'espionatge, burla i espionatge. Per entendre millor la diferència entre enganxar, burlar-se i espiar, reviseu els exemples.