gpt4 book ai didi

java - 如何在 JAR 中模拟服务

转载 作者:太空宇宙 更新时间:2023-11-04 06:41:51 24 4
gpt4 key购买 nike

我有一节课

class ServiceA{
public Service2 service2Obj;
public ServiceA(){

}
public ServiceA(Service2 service2Obj){
this.service2Obj = service2Obj;

}
public Response updateMetadata(String templateId,
InputStream metadataStream)
throws InternalServerError,ServiceException,
NotFoundException {
ObjectMapper mapper = new ObjectMapper();
Map<String, String> metadataMap = null;
String status = null;
metadataMap = mapper.readValue(metadataStream, Map.class);
String i = service2Obj.updateMetadataService(templateId, metadataMap);

}
return Response.ok().entity(i).build();
}
}

我的测试用例如下

 @Test
public void test(){
Service2 mockService = Mockito.mock(Service2.class);
ServiceA ServiceAObj= new ServiceA(mockService);

Mockito.when(mockService.updateMetadataService("1", readJsonString()))
.thenReturn(readJsonString());
// run method under test
Response response = ServiceAObj.updateMetadata("1",new ByteArrayInputStream(
"{\"title\":\"TEST\"}".getBytes());

Assert.assertEquals(200, response.getStatus());

// Parse json and get value from json string
String totalItems = (String) convertMapToJson(
(response.readEntity(Object.class))).get("title");

Mockito.verify(mockDocStoreImpl).updateMetadataService("1",readJsonString()); // getting here error wanted but not invoked

}



public static JSONObject readJsonString(String json)
throws DocGenServiceException {
String json = "{\"title\":\"TEST\"}";

JSONObject obj = new JSONObject(json);
return obj;
}

Service2 类在我的 JAR 文件中,这可能是测试失败的原因吗???我应该测试来验证 JAR 中的方法,即 Service2 类吗???我可以用这个吗verify(mockService).method2("1");//我正在使用这个,但收到错误消息,提示需要但未调用

最佳答案

问题在于,您在 when 语句中尝试匹配的 JSONObject 与将传递给您的方法的 JSONObject 和您在 verify 语句中使用的 JSONObject 不同(对象标识)。这是因为 readJsonString() 每次都会返回一个新对象。

初始化您的 JSONOBject 一次,并将其重新用于包含在 Mockito.eq() matcher 中的两个语句。 .

JSONObject json = readJsonString();
Mockito.when(mockService.updateMetadataService(
Mockito.eq("1"), Mockito.eq(json))).thenReturn(json);

// ...

Mockito.verify(mockDocStoreImpl).updateMetadataService(
Mockito.eq("1"), Mockito.eq(json));

关于java - 如何在 JAR 中模拟服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24586549/

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