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();
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());
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!