Trying mock void method using JUnit4 then getting below exception
Below is the class definition
@Mock
private TestService service;
@Mock
private DatabaseService mockDatabase;
@Before
public void setUpMock() throws Exception {
LOGGER.info("########### Moke setUp started ###########");
conn = Mockito.mock(Connection.class);
MockitoAnnotations.initMocks(this);
LOGGER.info("########### Moke setUp completed ###########");
}
@Test
public void testSuccess() {
try {
when(mockDatabase.getDBConnection()).thenReturn(conn);
Mockito.doNothing().when(service).deleteKeyInfo(mockDatabase.getDBConnection(), userBn, 1, "1");
} catch (Exception e) {
fail("### testDeviceIdNull ### Failed with following error: " + getStackTrace(e));
}
}
But getting below exception
java.lang.AssertionError: ### Failed with following error: org.mockito.exceptions.misusing.UnfinishedStubbingException:
Unfinished stubbing detected here:
E.g. thenReturn() may be missing.
Examples of correct stubbing:
when(mock.isOk()).thenReturn(true);
when(mock.isOk()).thenThrow(exception);
doThrow(exception).when(mock).someVoidMethod();
Hints:
1. missing thenReturn()
2. you are trying to stub a final method, which is not supported
3. you are stubbing the behaviour of another mock inside before 'thenReturn' instruction is completed
Below is the void method
public void deleteKeyInfo(Connection conn, UserBn userBn, Integer smId, String dId) throws Exception {
// Deleting key
}