创建对象时的Mockito来自其他类的私有方法

时间:2018-08-30 08:06:54

标签: java mockito

我有一个问题,如下所示,在我的测试代码中,我想测试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?
    }

}

0 个答案:

没有答案