有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    正如您收到的异常中所暗示的,^{}静态方法用于在模拟对象上存根方法。如果要存根方法调用的结果,则需要myDetailsFacade作为模拟。尝试类似的方法(当然,实际类型为myDetailsFacade):

    MyDetails myDetailsFacade= mock(MyDetails.class)
    when(myDetailsFacade.getMyDetailsInfo(anyLong())).thenReturn(null);