[英]How to mock @injected object in class using Mockito?
我有以下 Java 代码:
文件名: 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
...
}
}
文件名: MyClassTest.java
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());
}
}
我在MyClass.java
的第 86 行得到一个nullPointerException
,即该行中的myDatabaseDao
object 是 null。 如何正确模拟和传递 object?
我正在使用 JUnit 5 和 Mockito v4.2.0
我相信这是因为您忘记注册MockitoExtension
。 要使@Mock
和@InjectMocks
生效,你必须注册它:
@ExtendWith(MockitoExtension.class)
public class MyClassTest {
@InjectMocks
MyClass myClass;
@Mock
MyDatabaseDao myDatabaseDao;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.