java在Junit测试时遇到异常
我正在为一个模块进行junit测试
when(myDetailsFacade.getMyDetailsInfo(anyLong())).thenReturn(null);
mrc.getFlowScoe().put("action", "create");
try{
instance.initialiseForm(mrc, mpr);
}catch (Exception e){
fail("Shouldn't get here");
}
model=(MyDetailsForm)mrc.getFlowScope().get("myDetailsFormModel");
assertNotNull(model);
assertEquals(model.getNationality(), "USA");
我得到了这个错误
org.mockito.excetions.misusing.MissingMethodInvocationException:
when()requires an argument which has to be a method call on a mock.
For example
when(mock.getArticles()).thenReturn(articles);
在OutFacade中,我们得到了硬代码值,比如
private myDetails getMyDetailsData{
myDetails.setNationality("USA");
return myDetails;
}
这是我尝试测试的初始形式方法
public void initialiseForm (RequestContext requestContext, PortletRequest portletRequest){
requestContext.getFlowScope().put("getTitles", getTitles);
requestContext.getFlowScope().put("getGender", getGender);
BasicModel model = (BasicModel)requestContext.getFlowScope().get("BasicModel");
if(model == null){
model = new BasicModel();
}
model.setEmpName("Edward");
}
这是同一个java文件中的getTitles方法
private Map <String, String> getTitles(){
option.put("Dr", "Dr");
option.put("Mr", "Mr");
return option;
}
# 1 楼答案
正如您收到的异常中所暗示的,^{} 静态方法用于在模拟对象上存根方法。如果要存根方法调用的结果,则需要
myDetailsFacade
作为模拟。尝试类似的方法(当然,实际类型为myDetailsFacade
):