最简单的例子:我有以下方法:
public String testMethod(String arg){
.....
}
我想模拟此方法以返回传递的参数作为结果。例如:
testMethod("aString") returns "aString"
testMethod("anotherString") returns "anotherString"
我知道我可以硬编码这种行为,但我希望它是通用的。
这已经存在于Mockito 1.9.5及更高版本中,如returnsFirstArg
。
when(mock.testMethod(anyString())).thenAnswer(returnsFirstArg());
如果要避免在包中直接使用内部代码参数,请使用
您可以实现自己的答案
:
Answer<String> returnArgAnswer = new Answer<String>() {
public String answer(InvocationOnMock invocationOnMock) throws Throwable {
return (String) invocationOnMock.getArguments()[0];
}
};
SomeClass x = mock(SomeClass.class);
Mockito.when(x.testMethod(anyString())).thenAnswer(returnArgAnswer);
然后,使用任何字符串调用x.testMethod
,将返回该字符串。
您可以编写自己的答案
:
when(mock.testMethod(anyString())).thenAnswer(new Answer<String>() {
@Override
public String answer(InvocationOnMock invocation) {
return invocation.getArgumentAt(0, String.class);
}
});
或:
when(mock.testMethod(anyString()))
.thenAnswer(AdditionalAnswers.<String>returnsFirstArg());
我试图模拟一些方法调用,但不幸的是我一直返回null。你能帮我指出我可能出错的地方吗?我正在使用time(). thenBack(),我觉得我正确地模拟了返回变量。事先非常感谢。我是JUnit和Mockito的新手,所以如果我错过了任何明显的东西,我很抱歉。 ServiceTest.java Service.java
问题内容: 是否可以将此代码转换为Java 8可选单行表达式? 即如果某个对象不为空,我需要调用一个对象方法并返回其结果,否则返回0。 不适合,因为它返回相同类型的对象,但是我需要方法调用的结果或一些默认值。 问题答案: 几种形式: 其中,最后一个不使用Optional(因此不能严格回答您的问题!)更易于阅读,运行时开销也较小,因此应优先使用。 可以说,如果您反转选项,它甚至更简单: …尽管您可能
是否可以将此代码转换为Java8可选的单行表达式? i、 如果某个对象不是null,我需要调用一个对象方法并返回其结果,否则返回0<代码>可选。不可数()。orElse()不适合,因为它返回相同类型的对象,但我需要方法调用的结果或一些默认值。
我不确定我是否滥用了基于交互的测试,或者我是否做了一些概念上的错误。我正在开发一个Spring Boot应用程序(Kotlin),我的测试使用的是Spock/Groovy。 我有一个正在测试的类,它调用另一个服务来查询信息。被测试的类应该缓存结果。但是,我不能用返回值模拟一个方法并检查调用的次数,因为当我添加调用检查时,被模拟的方法总是返回null。 我创建了一个独立的示例,演示了这个问题。 前两