gpt4 book ai didi

java - Mockito WrongTypeOfReturnValue 可迭​​代而不是列表

转载 作者:行者123 更新时间:2023-12-04 12:49:12 25 4
gpt4 key购买 nike

我使用 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: The argument of type 'Iterable' cannot be returned because the following method should return the type 'List' -> userRepositorty bean.save()

The reason for this error can be : 1. The wanted argument position is incorrect. 2. The answer is used on the wrong interaction.

Position of the wanted argument is 0 and the possible argument indexes for this method are : [0] Iterable

我该如何解决这个问题?
Mockito 1.10.19

最佳答案

好吧,正如错误消息所暗示的那样,第一个参数是一个Iterable,而不是一个ListreturnsFirstArg,不幸的是,即使您实际上传递的是 List,也不允许您对参数进行向下转换。

令人惊讶的是,如果您只是天真地使用自己的 Answer 实现此行为,它就可以正常工作:

doAnswer(i -> i.getArguments()[0])
.when(userRepository)
.save(anyListOf(String.class));

它并不优雅,但很有魅力。

关于java - Mockito WrongTypeOfReturnValue 可迭​​代而不是列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41505923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com