我基本上需要调用Struts动作类的execute()方法。这甚至是可能的吗?如果是,我如何为执行调用加载ActionMapping,ActionForm,HttpServletRequest和HttpServletResponse对象。
加载Spring配置:
public class SpringColumnFixture extends ColumnFixture {
private static final ApplicationContext appContext =
new GenericXmlApplicationContext(new String[]{"classpath:spring/*.xml"});
}
尝试执行测试:
ActionForm form = new IncidentDetailsForm();
ActionMapping mapping = new ActionMapping();
HttpServletResponse response = new MockHttpServletResponse();
MockHttpServletRequest request = new MockHttpServletRequest() {
@Override public String getMethod() {
return "GET"; }
};
request.setAttribute("userName","****");
request.setParameter("userName","****");
forward = appContext.getBean(AppLandingAction.class).execute(mapping, form, request, response);
答案 0 :(得分:0)
终于解决了这个问题。我必须将JAXRPC的所有websphere jar都初始化,并将我的代码更改为以下内容。这有助于我解决问题。
ActionForm form = new ActionForm(){};
In******Form form1 = new In******Form();
form1.setActionType("View");
ActionMapping mapping = new ActionMapping();
mapping.addForwardConfig(new ActionForward("success","/action/viewCeraHome", false));
mapping.addForwardConfig(new ActionForward("noLogin","/loginError.jsp", false));
HttpServletResponse response = new MockHttpServletResponse();
MockHttpServletRequest request = new MockHttpServletRequest(){
@Override
public String getMethod() {
return "GET";
}
@Override
public HttpSession getSession(boolean create) {
return super.getSession(true);
}
};
request.setAttribute("userName","*****");
request.setParameter("userName","*****");
//forward = appContext.getBean(Ap*****Action.class).execute(mapping, form, request, response);
appContext.getBean(Ap*****Action.class).execute(mapping, form, request, response);
forward = appContext.getBean(Inc******Action.class).execute(mapping, (ActionForm)form1, request, response);
现在我希望专家们来看看,如果我在Fixture代码中使用的标准是好的,或者我需要采用不同的方法,请告诉我。