Java Junit测试时获取异常

Java Junit测试时获取异常,java,junit,mockito,Java,Junit,Mockito,我正在为一个模块进行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=(MyDeta

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

}

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

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

你能在mock上发布更多围绕调用的代码吗?你是如何创建myDetailsFacade的?Facade没什么,我们只是从facademyDetailsFacade获取硬代码值。myDetailsFacade应该是某种类型的mock对象-获取更多信息。可能重复我尝试过,但得到相同的错误,请再次检查问题,我放了我要测试的代码片段。@Akash我仍然看不到为myDetailsFacade赋值的位置。你能提供不起作用的测试的全部细节吗?请看一下上面代码中我的initialiseForm public方法我想做一个junit测试。看一下这个@Akash,我想已经有足够的关于正在测试的代码的信息了-有用的是看完整的测试,不仅仅是您提供的代码片段。