java - 模拟具有复杂类型的方法

标签 java mockito

在模拟具有复杂类型的方法时,在java中返回null

public void sendRequest(OnlineRequest request) {
        OnlineResponse response = client.handleRequest(request);
        System.out.println( response);
}
Mockito.when(client.handleRequest(request)).thenReturn(new OnlineResponse());

最佳答案

如果我理解正确,您的问题是 System.out.println(response); 打印 null

这很可能是因为 client.handleRequest() 没有按照您期望的 request 被调用。这可能是您未向我们提供的代码中的某个错误,或者可能只是由于 OnlineRequest 没有 equals/hash-code 的实现,因此 当() 永远不会被触发,因为它不是使用与您在单元测试中使用的完全相同的 OnlineRequest 实例来调用的。

您可能希望测试 handleRequest 是否使用您期望的对象进行调用。这可以使用 verify() 来完成:

verify(client).handleRequest(request);

在你的单元测试中。这也依赖于 equals/hash-code 实现来确定 request 是否是预期的参数。

关于java - 模拟具有复杂类型的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55855440/

相关文章:

java - KeyListener 事件的短暂延迟

java - 实现某个接口(interface)并具有特定父类(super class)的参数 : generics or instanceof?

java - 比较枚举的最佳方式

java - 在 while 循环中更改 double 的值

android - 如何自动为改造响应生成模拟数据对象?

java - Eclipse XML 编辑器显示 android1 不是 android 并且没有自动完成

android-studio - Android Studio (Gradle) 找不到 Mockito

java - 模拟静态类

java - 如何模拟 - 从 s3 读取文件

java - Mockito doThrow() 方法使我的测试因给定异常而失败