[英]Mocking a method which takes String as a parameter Mockito
I am trying to mock a method which takes String as a parameter, Based on the string value i wanted to return different values, below is my Sample code 我正在尝试模拟一个将String作为参数的方法,基于我想返回不同值的字符串值,以下是我的示例代码
when(mockVariableResolver.resolveVariable(
(FacesContext)anyObject(),
Mockito.eq(ProgramConstants.SRCH_PROC_DATA_BEAN))).
thenReturn(searchProcedureCodeDataBean);
The resolveVariable metjos takes an object and a string, Object might be anything but the second argument must match, The above one did not worked. resolveVariable metjos需要一个对象和一个字符串,Object可以是任何东西,但第二个参数必须匹配,以上一个没有用。
EDIT: 编辑:
Signature for resolveVariable metod is 解决方案的签名是
fc.getApplication().getVariableResolver().resolveVariable(fc,
"#{" + ProgramConstants.SRCH_PROC_DATA_BEAN + "}")
Please help me on this. 请帮我。
Based on your description, I would implement it as Mockito.Answer : 根据您的描述,我将其实现为Mockito.Answer :
when(mock.resolveVariable(anyObject(), anyString())).thenAnswer(new Answer<String>() {
@Override
public String answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
String secondArgument = (String) args[1];
//
// TODO: make return value depend from secondArgument
return null;
}
});
I'm guessing here but perhaps 我在这里猜,但也许
when( mockVariableResolver )
.resolveVariable( (FacesContext)anyObject(),
Mockito.eq( ProgramConstants.SRCH_PROC_DATA_BEAN ) ) )
.thenReturn( searchProcedureCodeDataBean );
will do the trick. 会成功的
Note that the resolveVariable()
method is moved outside the when()
argument list, which should always be just a @Mock
. 请注意,
resolveVariable()
方法移至when()
参数列表之外,该列表应始终只是@Mock
。
Cheers, 干杯,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.