2013-02-27 71 views
0

我基本上需要调用Struts动作类的execute()方法。这甚至是可能的。如果是的话我怎样才能加载执行调用的ActionMapping,ActionForm,HttpServletRequest和HttpServletResponse对象。如何设置FitNesse以用于基于struts的应用程序?

加载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

我能够以某种方式将所有需要的弹簧配置放到classpath中,并从我现有的pom中调用fitnesse进程作为一项任务。我得到所有的XML文件加载。我也尝试创建一个请求,响应,actionMapping和actionform(全部虚拟)。我甚至在请求中设置了一些参数,但在调用之后,设置的参数在请求中不可用。我总是得到一个空请求。任何人都可以请帮我。 – sandy 2013-03-12 11:30:21

+0

你可以发布你的代码吗? – ekims 2013-03-13 20:00:21

+0

@ekims - 感谢您编辑问题。忘了这个功能。你可以让我知道我在做什么错,因为我总是得到一个空请求,有时候甚至是对于MockHttpServletRequest的classNotFoundException,尽管该jar存在于类路径中。 – sandy 2013-03-18 05:32:25

回答

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); 

现在我想专家的下降,让和我知道,如果我使用的夹具代码标准是好的,如果我需要按照不同的方法。

相关问题