【问题标题】:Getting an exception while Junit testsJunit 测试时出现异常
【发布时间】:2015-11-20 05:58:17
【问题描述】:

我正在为一个模块做一个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;
}

这是我正在尝试测试的初始化方法。

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;

}

【问题讨论】:

标签: java junit mockito


【解决方案1】:

正如您收到的异常中所暗示的,when() 静态方法用于在模拟对象上存根方法。如果要对方法调用的结果进行存根,则需要 myDetailsFacade 模拟。试试类似的东西(当然是myDetailsFacade的实际类型):

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

【讨论】:

  • 我试过了,但得到了同样的错误,请再次检查问题,我输入了我想测试的代码 sn-p。
  • @Akash 我仍然看不到您为myDetailsFacade 赋值的地方。您能否提供不起作用的测试的完整详细信息。
  • 请在上面的代码中查看我的initialiseForm公共方法,我想为此进行junit测试。
  • @Akash 我认为关于正在测试的代码已经有足够的信息 - 有用的是查看完整的测试,而不仅仅是您提供的 sn-p。
猜你喜欢
  • 1970-01-01
  • 2018-02-26
  • 2019-03-11
  • 1970-01-01
  • 2011-01-28
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
相关资源
最近更新 更多