【发布时间】: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;
}
【问题讨论】:
-
你能在模拟上发布更多围绕调用的代码吗?
-
你是如何创建
myDetailsFacade的? -
Facade 什么都不是,我们只是从 Facade 获取硬编码值
-
myDetailsFacade应该是某种模拟对象 - See the docs 了解更多信息。