我有一个方法,它被用作:
List<Integer> permittedUserIds= this.getAuthorizationManager()
.getPermittedUserIDs(Constants.Permissions.Target.COMMON_DATA, Constants.Permissions.Action.READ,
userIdList);
模拟遵循的方法如下:
选项1:
Mockito.when(spied.getPermittedUserIDs(Mockito.anyString(),Mockito.anyString(),Mockito.anyList())).thenAnswer(i -> i.getArguments()[2]);
这甚至不工作,因为我认为只需要do返回工作,然后回答不会在这里工作。
选项 2:
Mockito.doReturn(AdditionalAnswers.returnsLastArg())
.when(spied)
.getPermittedUserIDs(Mockito.anyString(), Mockito.anyString(),
Mockito.anyList());
获取运行时异常:
错误!Java . lang . runtime exception:org . mock ITO . exceptions . misusing . wrongtypeofrentvalue:ReturnsArgumentAt不能由getPermittedUserIDs()返回getPermittedUserIDs()应返回列表
如果您不确定为什么会出现上述错误,请继续阅读。由于语法的性质,可能会出现上述问题,因为:
请建议如何嘲笑它。其思想是返回作为最后一个参数传入的相同数组列表。
使用doAnswer
而不是doReturn
。
这里是例子:
public class AppTest {
@Test
void test() {
Service service = Mockito.mock(Service.class);
List<Integer> userIdList = Arrays.asList(3,4);
Mockito.doAnswer(AdditionalAnswers.returnsLastArg())
.when(service)
.getPermittedUserIDs(Mockito.anyString(), Mockito.anyString(),
Mockito.anyList());
List<Integer> permittedUserIds= service
.getPermittedUserIDs("1", "2",
userIdList);
Assertions.assertSame(userIdList,permittedUserIds);
}
public interface Service {
List<Integer> getPermittedUserIDs(String a, String b, List<Integer> userIdList);
}
}
函数能够接收参数供自己使用,也可以返回零个或多个值(我们通常把返回多个值称为返回一组值)。相比与 C、C++、Java 和 C#,多值返回是 Go 的一大特性,为我们判断一个函数是否正常执行(参考 第 5.2 节)提供了方便。 我们通过 return 关键字返回一组值。事实上,任何一个有返回值(单个或多个)的函数都必须以 return 或 panic(参考 第 13 章)结尾。 在函数块里面,re
我想使返回数据类型的的函数与传入的参数的数据类型相同。例如,我会这样调用函数: 因为我将一个传递给,所以它返回了一个
问题内容: Varargs: 与 单数组参数: Java 1.6似乎接受/拒绝以下内容: 假设以上内容是正确的,为什么不总是使用varargs而不是单个数组参数呢?似乎免费增加了呼叫者的灵活性。 如果有,专家可以共享内部JVM的不同吗? 谢谢。 问题答案: 数组从Java的开始就出现了,而varargs是最近才添加的。因此,许多旧代码仍然很高兴地使用数组。 还要注意,使用显式数组参数调用通用var
有一个方法
问题内容: 我有以下代码要进行单元测试: 我想,以验证上的第一次调用 返回。 因此,我无法使用,因为那时该方法已经完成并被调用。 因此,我认为我需要在调用发生时已经对调用进行验证。如何使用Mockito做到这一点? 问题答案: 我创建了以下实现: 此答案捕获正在进行的调用的属性。然后可以将其用于简单的断言。该实现使用Java 8 API。如果那不可用,则需要使用能够将转换为捕获值的接口。测试用例中
为了理解TypeScript的精神,我在我的组件和服务中编写了全类型签名,这扩展到了angular2表单的自定义验证函数。 我知道我可以重载函数签名,但这需要每个返回类型的参数不同,因为将每个签名编译为单独的函数: 我还知道我可以返回单个类型(如Promise),它本身可以是多个子类型: 但是,在angular2自定义表单验证器的上下文中,单个签名(一个类型为的参数)可以返回两种不同的类型:带有表