如何在JAR中模拟服务



我有一个类

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与将传递给方法的不同(对象标识(,以及您在verify语句中使用的不同。这是因为readJsonString()每次都会返回一个新对象。

初始化一次JSONOBject,并将其重用于包装在Mockito.eq()匹配器中的两个语句。

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));

相关内容

  • 没有找到相关文章

最新更新