首页 > 解决方案 > 参数是junit中模拟服务的不同错误

问题描述

我试图通过传递一个对象来更新junit,但我得到“参数是不同的错误”

这是我的代码:我更新了现有的dataController、dataService

数据控制器:

 old method:

    List<String> clientData= dataService .retrieveClientData(user, Clientroperties.product);
             updated to:
    dataIdCollector dataIdCollector = new dataIdCollector();
    List<String> clientData= dataService .retrieveClientData(user, Clientroperties.product, dataIdCollector);

这是数据服务类

 DataService:
    List<String> clientData retrieveClientData(user, Clientroperties.product, dataIdCollector){
    List<ClientDetails> details = dataDao.getDetails(user, Clientroperties.product);
    dataIdCollector.collectIds(details);
    return serailizeClientDetails(details);
    }

我试图通过传递 dataIdCollector 对象来更新junit

  dataIdCollector dataIdCollector = new dataIdCollector();

     when(mockService.retrieveClientData(user, Clientroperties.product, dataIdCollector))
     .thenReturn(Arrays.asList("abc"));
  String result = this.mockMvc.perform(
                get("/rest" + RestApiRequestMapping.clientData)

                        .with(credentials)
                        .accept(MediaType.APPLICATION_JSON)
        )
                .andExpect(status().isOk())
                .andReturn().getResponse().getContentAsString();                  

     verify(mockService).retrieveClientData(user, Clientroperties.product,dataIdCollector);

这里 mockMVC 端点正在调用 dataController 中的方法。再次在控制器类中创建的 dataIdCollector 对象并导致“Arguments are different”错误。如何在junit中解决这个问题?

 Argument(s) are different!Wanted:

 dataIdCollector@1fb71788

 Actual invocations have different arguments:

 dataIdCollector@8cb7185

模拟服务没有更新 dataIdCollector 对象,为什么它仍然出现“不同的参数..”错误。

标签: mockitojunit4

解决方案


推荐阅读