gpt4 book ai didi

java - Spring中如何模拟私有(private)方法中调用的公共(public)方法的返回

转载 作者:行者123 更新时间:2023-12-02 06:45:55 29 4
gpt4 key购买 nike

我在刚刚实现的类中有一个名为 getSubject 的私有(private)方法。我正在尝试对私有(private)方法进行单元测试,但我的问题是私有(private)方法 getSubject 正在调用另一个方法 getSubjectOracle() (注意:getSubjectOracle 是 jar 文件中的公共(public)方法),它返回一个 String 主题。伪代码如下所示:

public class Service{

private oracleDao

//setter for oracle dao avilable


private String getSubject(String id,Stringountry){

String subject = oracleDao.getSubjectOracle(String id,String country)

return subject;

}

}

知道如何模拟方法 oracleDao.getSubjectOracle(String id,String Country) 的返回,以便对方法 getSubject(String id, String Country) 进行单元测试请问?

我在网上搜索了有用的资源,但没有找到任何资源。

提前致谢。

最佳答案

一种方法是为 oracleDao 编写一个 setter。在那里你可以设置一个模拟而不是真实的东西。例如,编写您自己的 oracleDao 来执行您想要的操作。在 @Before 方法中,您将注入(inject)模拟 oracleDao。

使用像 Mockito 这样的框架,这一切都会变得更好。它看起来像这样:

@Mock
YourDaoThing mock;

@Before
public setUp(){
MockitoAnnotation.initMocks(this);
service = new Service();
service.setDao(mock);
}

@Test
public testGetSubject(){
String someString = "whatever";
when(mock.getSubjectOracle(id,country)).thenReturn(someString)

assertEquals(expect, service.callToTheMethodYouTest())

}

关于java - Spring中如何模拟私有(private)方法中调用的公共(public)方法的返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18640744/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com