2013-02-27 66 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); 

現在我想專家的下降,讓和我知道,如果我使用的夾具代碼標準是好的,如果我需要按照不同的方法。

相關問題