java - Mockito:如何模拟类型 `.class`

标签 java unit-testing mocking mockito

我有我想要模拟响应的方法

jdbcTemplate.queryForList(query, Integer.class, nick);

我尝试像这样 mock 它

doReturn(Collections.singletonList(1))
            .when(jdbcTemplate)
            .queryForList(anyString(), any(Integer.class), anyString());

但这不起作用。

我如何模拟任何Integer.class

最佳答案

您想模拟通话

template.queryForList(String s, Class<T> elementType, Object... args);

所以你需要这样做

when(template)
   .queryForList(anyString(), any(Class.class), any(Object[].class)
   .thenReturn(1);

不过,您应该减少使用 any,最好这样做

when(template)
    .queryForList("sql", Integer.class, "yourArg")

或组合

when(template)
    .queryForList(eq("sql"), eq(Integer.class), any(Object[].class))

关于java - Mockito:如何模拟类型 `.class`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48764979/

相关文章:

java - 无法将 GridView 内的 ImageView 设置为从 Drawable 转换的 Bitmap

java - 当资源很大时,有没有办法在 Java HttpClient 调用期间不下载正文?

java - 递归的性能

java - 是否有用于 Spring 单元测试的内存/模拟 MySQL 包?

java - 如何在我刚刚在 Android 中拍摄的图像上放置水印图像?

java - Guice:无法注入(inject)辅助列表<Long>

node.js - 在 Mocha 中异步测试大量数据

clojure - Clojure 测试中 stub HTTP 请求的策略

java - Mockito spy 失败,因为无法初始化类成员

python - 模拟 celery 任务的单元测试 Flask View