java模拟具有复杂类型的方法
模拟具有复杂类型的方法时,在java中返回null
public void sendRequest(OnlineRequest request) {
OnlineResponse response = client.handleRequest(request);
System.out.println( response);
}
Mockito.when(client.handleRequest(request)).thenReturn(new OnlineResponse());
# 1 楼答案
如果我理解正确,你的问题是
System.out.println(response);
打印null
这很可能是因为
client.handleRequest()
没有使用您期望的request
调用。这可能是您没有提供给我们的代码中的某个地方出现了错误,或者可能只是因为OnlineRequest
没有equals/hash代码的实现,所以when()
永远不会被触发,因为它不是使用与单元测试中使用的OnlineRequest
完全相同的实例调用的您可能希望测试
handleRequest
是否使用您期望的对象调用。这可以通过verify()
实现:在单元测试中。这也取决于equals/hash代码实现,以确定
request
是否为预期参数