我需要将Class传递给参数匹配器。这就是我正在做的事情,我的比赛应该返回对象apiResponse,该对象不为null,因为我正在创建它并传递它。但是,它似乎并没有注入。我收到它为空。

我也尝试过使用ArgumentMatchers.eq(ApiResponse.class),Mockito.eq(ApiResponse.class),ArgumentMatchers.any(ApiResponse.class)和Mockito.any(ApiResponse.class)。

使用ArgumentMatchers.any(ApiResponse.class)和Mockito.any(ApiResponse.class),代码甚至都无法编译,而使用ArgumentMatchers.eq(ApiResponse.class),Mockito.eq(ApiResponse.class),我收到的结果为null另一方面。请提出建议!

      ApiResponse apiResponse = new ApiResponse();
      apiResponse.setErrcode("0");
      apiResponse.setNum_fields_changed("1");
      Mockito.when(xmlResponseMapper.parseXMLToObject(any(String.class),ArgumentMatchers.eq(ApiResponse.class))).thenReturn((apiResponse));


这是我在课堂上使用此匹配器的地方

  apiResponse = xmlResponseMapper.parseXMLToObject(response.getBody(), ApiResponse.class);


我做错什么了吗?我正在使用Java 8。

最佳答案

解决了。问题实际上不是ArgumentMatchers.eq(ApiResponse.class),而是字符串,第一个参数在匹配器中传递

  Mockito.when(xmlResponseMapper.parseXMLToObject(any(String.class),ArgumentMatchers.eq(ApiResponse.class))).thenReturn((apiResponse));


我将null作为第一个参数传递。一旦我传递了一个虚拟字符串,一切都很好,并且我在另一侧收到了apiResponse。

09-27 18:47