Reputation: 394
I have the following Java code:
Filename: MyClass.java
import javax.inject.Inject;
...
public class MyClass {
@inject
private MyDatabaseDao myDatabaseDao;
public MyResponse process() {
...
String value = myPrivateMethod(x, y, z);
...
}
private String myPrivateMethod(String x, String y, String z) {
value = myDatabaseDao.operation(x, y, x); // Line Number 86
...
}
}
Filename: MyClassTest.java
@ExtendWith(MockitoExtension.class)
public class MyClassTest {
@InjectMocks
MyClass myClass;
@Mock
MyDatabaseDao myDatabaseDao;
@Test
void testProcess() {
...
Mockito.when(myDatabaseDao.operation(any(), any(), any()))
.thenReturn(someValue);
...
assertEquals(testResponse, myClass.process());
}
}
I get a nullPointerException
in line number 86 of MyClass.java
, i.e., the myDatabaseDao
object in that line is null. How can I properly mock and pass that object?
I am using JUnit 5 and Mockito v4.2.0
Upvotes: 0
Views: 1100
Reputation: 90527
I belive it is because you forget to register MockitoExtension
. To make @Mock
and @InjectMocks
to take effect , you have to register it :
@ExtendWith(MockitoExtension.class)
public class MyClassTest {
@InjectMocks
MyClass myClass;
@Mock
MyDatabaseDao myDatabaseDao;
}
Upvotes: 3