繁体   English   中英

Junit测试时出现异常

[英]Getting an exception while Junit tests

我正在对模块进行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);

在外立面上,我们正在获得硬代码价值,例如。

private myDetails getMyDetailsData{
myDetails.setNationality("USA");
return myDetails;
}

这是我要测试的Initializeform方法。

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;

}

正如您所收到的异常所暗示的那样, when()静态方法用于对模拟对象上的方法进行存根。 如果您想存根方法调用的结果,则需要myDetailsFacade作为模拟对象。 尝试类似的操作(当然,使用myDetailsFacade的实际类型):

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM