Home > Java > javaTutorial > How to Mock Void Methods in Mockito Effectively?

How to Mock Void Methods in Mockito Effectively?

Linda Hamilton
Release: 2024-12-25 03:39:08
Original
542 people have browsed it

How to Mock Void Methods in Mockito Effectively?

Mocking Void Methods with Mockito

Mocking void methods in Mockito can be achieved using methods from the doThrow(), doAnswer(), doNothing(), and doReturn() families. These methods allow you to specify behavior for a mocked method that has a void return type.

Example:

// Mock a void method that throws an exception
Mockito.doThrow(new Exception()).when(instance).methodName();

// Mock a void method that performs some action
Mockito.doAnswer(new Answer<Void>() {
    public Void answer(InvocationOnMock invocation) {
        Object[] args = invocation.getArguments();
        System.out.println("called with arguments: " + Arrays.toString(args));
        return null;
    }
}).when(instance).methodName();
Copy after login

In your specific example, you can mock the setState() method in the World class as follows:

// Mock the World class
World mockWorld = mock(World.class); 

// Mock the setState method to print the arguments passed to it
doAnswer(new Answer<Void>() {
    public Void answer(InvocationOnMock invocation) {
        Object[] args = invocation.getArguments();
        System.out.println("called with arguments: " + Arrays.toString(args));
        return null;
    }
}).when(mockWorld).setState(anyString());
Copy after login

Now, when you call mockWorld.setState() within your test, the provided Answer will be executed, allowing you to verify that the correct arguments were passed to the method.

The above is the detailed content of How to Mock Void Methods in Mockito Effectively?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template