我有一个问题,如下所示,在我的测试代码中,我想测试A类的“ needTest”功能。但是,NeedTest函数在其私有方法中创建了一个db连接器,然后使用该连接器连接数据库。
我想模拟createObjB,但这是一个私有函数。 我想模拟连接器的connectDB,但是对象是在NeedTest内部创建的,似乎无法干预。
所以我的问题是,我必须公开createObjB吗?
package AProblem;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.junit.MockitoJUnitRunner;
public class Connector {
public void connectDB() {
// This function connects DB
}
}
public class A {
private Connector createObjB() {
return new Connector();
}
public void needTest() {
Connector connector = createObjB();
connector.connectDB();
// do something else
}
}
@RunWith(MockitoJUnitRunner.class)
public class TestA {
@InjectMocks
private A a;
@Test
public void testNeedTest() {
// I need to mock connector, but I can't access createObjB
// How can I stub a fake Connector somewhere so that connectDB() will not access DB?
}
}