Mocks maken met Mockito
Gebruik Mockito om mockobjecten voor dependencies te maken, zodat de te testen unit wordt geïsoleerd van zijn samenwerkingspartners.
Mocks maken met Mockito is een gratis Testen beheersen: JUnit, Mockito en integratietesten-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Testen beheersen: JUnit, Mockito en integratietesten. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Testen beheersen: JUnit, Mockito en integratietesten bevat in totaal 4 lessen.
Introductie tot Mockito-mocks
In de vorige les hebben we het concept van een mockobject geleerd. Mocks zijn speciale testdubbels waarmee je het gedrag van afhankelijkheden kunt beheersen.
Nu gaan we aan de slag met Mockito, een populair Java-framework voor mocking, om te zien hoe eenvoudig het is om deze krachtige hulpmiddelen voor je tests te maken.
Waarom mocks maken?
Mocks maken is essentieel voor effectief testen van eenheden:
- Isolatie: Met mocks kun je één code-eenheid geïsoleerd testen, zonder je zorgen te maken over de echte afhankelijkheden.
- Controle: Je kunt mocks zo programmeren dat ze zich precies gedragen zoals nodig is voor je testsituatie, en zo verschillende uitkomsten simuleren.
- Snelheid: Mocks vermijden trage bewerkingen zoals databaseaanroepen of netwerkverzoeken, waardoor je tests veel sneller worden uitgevoerd.
De methode `Mockito.mock()`
De eenvoudigste manier om een mockobject te maken in Mockito is door de statische methode Mockito.mock() te gebruiken. Je geeft de Class of Interface door die je wilt mocken.
De methode retourneert een nieuwe mockinstantie die eruitziet en zich gedraagt als het echte object, maar zonder de bijbehorende implementatielogica.
Voorbeeld van een eenvoudige mock
Laten we een mock maken voor een eenvoudige EmailService-interface. Voer de code uit om te zien hoe een mockobject wordt gemaakt.
import org.mockito.Mockito;
interface EmailService {
void sendEmail(String to, String subject, String body);
String getServiceStatus();
}
public class Main {
public static void main(String[] args) {
EmailService mockEmailService = Mockito.mock(EmailService.class);
System.out.println("Mock created: " + mockEmailService.getClass().getName());
}
}Het standaardgedrag van mocks begrijpen
Wat gebeurt er als je een methode op een mock aanroept zonder aan te geven wat deze moet doen?
- Objecten: Methoden die objecten retourneren, retourneren
null. - Primitieve typen: Methoden die primitieve typen retourneren, zoals
intenboolean, retourneren hun standaardwaarden (0enfalse). - Collecties: Methoden die collecties retourneren, retourneren lege collecties.
- Void: Methoden die
voidretourneren, doen niets.
Standaardgedrag in actie
Laten we een methode op onze mockEmailService aanroepen zonder configuratie. Bekijk de standaardretourwaarde.
import org.mockito.Mockito;
interface EmailService {
void sendEmail(String to, String subject, String body);
String getServiceStatus();
}
public class Main {
public static void main(String[] args) {
EmailService mockEmailService = Mockito.mock(EmailService.class);
// Calling a method that returns an object
String status = mockEmailService.getServiceStatus();
System.out.println("Default status: " + status);
// Calling a void method (does nothing by default)
mockEmailService.sendEmail("test@example.com", "Hi", "Hello");
System.out.println("Void method called (no output)");
}
}Mocks maken met `@Mock`
Hoewel Mockito.mock() werkt, biedt Mockito voor tests een handigere manier met de annotatie @Mock.
Je declareert eenvoudig een veld met @Mock, waarna Mockito ervoor zorgt dat dit als mockobject wordt geïnitialiseerd.
`@Mock`-annotaties initialiseren
Om @Mock-annotaties te laten werken, moet je Mockito vertellen dat het deze moet verwerken. In JUnit 5 doe je dit meestal met de annotatie @ExtendWith(MockitoExtension.class) op je testklasse.
Je kunt ze ook handmatig initialiseren met MockitoAnnotations.openMocks(this).
Voorbeeld: de annotatie `@Mock` gebruiken
Dit voorbeeld simuleert een testklasse waarin @Mock wordt gebruikt. Voer het uit om te zien hoe de mock wordt geïnitialiseerd via MockitoAnnotations.openMocks().
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
interface DataRepository {
String fetchData();
}
// Simulate a test class structure
class MyServiceTest {
@Mock
DataRepository mockRepository;
public MyServiceTest() {
// Manually open mocks for demonstration in main
MockitoAnnotations.openMocks(this);
}
}
public class Main {
public static void main(String[] args) {
MyServiceTest testInstance = new MyServiceTest();
System.out.println("Mocked repository: " + testInstance.mockRepository.getClass().getName());
System.out.println("Default fetch data: " + testInstance.mockRepository.fetchData());
}
}Korte controle over mocks
Je wilt een mockobject maken voor een interface met de naam PaymentGateway. Welke van de volgende opties is een correcte en gebruikelijke manier om dit in Mockito te doen?
Samenvatting: mocks maken
Je hebt de belangrijkste manieren geleerd om mockobjecten te maken met Mockito:
- Gebruik
Mockito.mock(ClassToMock.class)om rechtstreeks een mock te maken. - Gebruik de annotatie
@Mockop een veld, meestal geïnitialiseerd met@ExtendWith(MockitoExtension.class)in JUnit 5. - Mocks retourneren standaardwaarden (
null,0enfalse) voor methodeaanroepen als je niets anders configureert.
Vervolgens leer je hoe je controleert of je mocks zoals verwacht zijn aangeroepen!
Leer Testen beheersen: JUnit, Mockito en integratietesten met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Mocks maken met Mockito” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Testen beheersen: JUnit, Mockito en integratietesten, waaronder “Mocks maken met Mockito”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Testen beheersen: JUnit, Mockito en integratietesten bevat in totaal 4 lessen.
Wat leer ik in “Mocks maken met Mockito”?
Gebruik Mockito om mockobjecten voor dependencies te maken, zodat de te testen unit wordt geïsoleerd van zijn samenwerkingspartners. Je oefent met Testen beheersen: JUnit, Mockito en integratietesten door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Testen beheersen: JUnit, Mockito en integratietesten te beginnen?
Ervaring vooraf is niet nodig. Testen beheersen: JUnit, Mockito en integratietesten op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Mocks maken met Mockito”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Testen beheersen: JUnit, Mockito en integratietesten?
Ja. Elke les over Testen beheersen: JUnit, Mockito en integratietesten bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Mocks, stubs en fakes
- Mocks maken met Mockito
- Interacties met mocks verifiëren
- Mocks injecteren met @Mock en @InjectMocks