gpt4 book ai didi

java - 在 Junit 和 Mockito 中对另一个公共(public)类的最终类方法进行 stub

转载 作者:行者123 更新时间:2023-11-30 06:06:33 26 4
gpt4 key购买 nike

我需要在其他公共(public)类方法中 stub 最终类方法。我的场景是,我有一个类名称 ElasticIntegration ,它是公共(public)类。有一个名为 licenseCheckOut

的方法
public Response licenseCheckOut(String jsonObj) {
LogResource logData = new LogResource();
try {
LicenseServiceImpl licenseCheck = new LicenseServiceImpl();
JSONObject queryObj = new JSONObject(jsonObj);
int licenseId = -1;
Properties configProperties = Utilities.getConfigProperties();
Utilities.verifykeycloakToken(queryObj, configProperties);
String userName = userAuth.getUserInfo(queryObj,configProperties);
if(userName !=null){
licenseId = licenseCheck.checkoutLicense(userName);
}
String result = "{\"licenseid\": "+ licenseId +"}";
return Response.ok(result).build();
} catch (Exception ex) {
LogDetail details = Utilities.constructDetails("licenseCheckOut", ex);
logData.writeLogMessage(null, details);
return Response.serverError().entity(details).build();
}
}

licenseCheckOut方法中,verifykeycloakToken是我们需要 stub 的方法。 实用程序 最终类。

 **verifykeycloakToken Function in Utilities class**

如果您准确地检查上图引用connection.connect(),我们会收到错误。所以我用 when().thenReturn()

来 stub 类
    Utilities util = new Utilities();
Utilities mock = mock(Utilities.class);
JSONObject queryObj = new JSONObject(jsonObj);
Properties mapProperties = null ;
when(mock.verifykeycloakToken(queryObj, mapProperties)).thenReturn(true);

我到达这里的错误是

org.mockito.exceptions.base.MockitoException: Cannot mock/spy class com.project.Utilities Mockito cannot mock/spy because : - final class at ElasticIntegrationTest.licenseCheckOut_verifykeycloakToken_ShouldReturnSuccessBuild(ElasticIntegrationTest.java:51)

最佳答案

您的verifykeycloakToken Utilities中的方法类是 static方法。

要模拟这个,您可以探索以下选项:

  • 模拟里面的一切 verifykeycloakToken功能。那看起来当您创建 new URL() 时,在您的情况下做起来并不困难其中的对象,mockito无法处理。
  • 使用powermockito因为仅mocktio无法处理static mock 。

PS:使用 powermock 通常不受欢迎,特别是如果您遵循TDD。但在处理遗留代码时,它确实可以发挥作用。

关于java - 在 Junit 和 Mockito 中对另一个公共(public)类的最终类方法进行 stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51190146/

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