如何模拟在 Spring 中私有方法中调用的公共方法的返回



我在刚刚实现的类中有一个名为getSubject的私有方法。我正在尝试对私有方法进行单元测试,但我的问题是私有方法getSubject正在调用另一个方法getSubjectOracle()(注意:getSubjectOracle 是 jar 文件中的公共方法),该方法返回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。在那里,您可以设置模拟而不是真实的东西。例如,编写自己的预言机,做你想做的事。在@Before方法中,您将注入模拟预言机道。

所有这些对于像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())
}

如果你试图测试 Service ,那么你也必须模拟oracleDao并使其getSubjectOracle()方法返回你想要的字符串。

我假设您不是在测试getSubject()而是在测试调用getSubject()的方法。

相关内容

  • 没有找到相关文章

最新更新