我正在尝试模拟一个将String作为参数的方法,根据我想要返回不同值的字符串值,下面是我的示例代码
when(mockVariableResolver.resolveVariable(
(FacesContext)anyObject(),
Mockito.eq(ProgramConstants.SRCH_PROC_DATA_BEAN))).
thenReturn(searchProcedureCodeDataBean);
resolveVariable metjos接受一个对象和一个字符串,Object可能是任何东西,但第二个参数必须匹配,上面的一个没有用。
修改
resolveVariable metod的签名是
fc.getApplication().getVariableResolver().resolveVariable(fc,
"#{" + ProgramConstants.SRCH_PROC_DATA_BEAN + "}")
请帮我解决这个问题。
答案 0 :(得分:3)
根据您的说明,我会将其实施为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;
}
});
答案 1 :(得分:0)
我猜这里,但也许
when( mockVariableResolver )
.resolveVariable( (FacesContext)anyObject(),
Mockito.eq( ProgramConstants.SRCH_PROC_DATA_BEAN ) ) )
.thenReturn( searchProcedureCodeDataBean );
会做到这一点。
请注意,resolveVariable()
方法移出when()
参数列表,该列表应始终为be just a @Mock
。
干杯,