我需要将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。