我使用JpaRepository将集合保存到我的数据库。这是方法的声明:
<S extends T> List<S> save(Iterable<S> entities);
在我的测试中,我使用returnsFirstArg
作为这样的答案:
doAnswer(returnsFirstArg()).when(userRepository)
.save(anyListOf(User.class));
所以我想在不保存的情况下返回给定的集合。我无法返回null
,因为我测试了以下代码:
return userRepository.save(users);
然后我应该对结果做出断言 模拟给了我以下错误:
org.mockito.exceptions.misusing.WrongTypeOfReturnValue:参数 类型'Iterable'无法返回,因为以下方法 应该返回类型'列表' - &gt; userRepositorty bean.save()
出现此错误的原因可能是: 1.通缉参数的位置不正确。 答案用于错误的互动。
有用参数的位置为0,可能的参数索引 对于这种方法是: [0] Iterable
我该如何解决这个问题呢? Mockito 1.10.19
答案 0 :(得分:2)
好吧,正如错误消息所示,第一个参数是Iterable
,而不是List
。遗憾的是,returnsFirstArg
不会让你贬低论点,即使你实际上是在传递List
。
令人惊讶的是,如果你只是天真地用你自己的Answer
实现这种行为,它就可以了:
doAnswer(i -> i.getArguments()[0])
.when(userRepository)
.save(anyListOf(String.class));
它不优雅,但它的魅力就像一个魅力。