0

基本的に、Struts アクション クラスの execute() メソッドを呼び出す必要があります。これは可能ですか?はいの場合、実行呼び出しのために ActionMapping、ActionForm、HttpServletRequest、および HttpServletResponse オブジェクトをロードするにはどうすればよいですか。

Spring Config のロード:

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

1 に答える 1

0

最後に問題を解決しました。JAXRPC を初期化するためにすべての websphere jar を配置する必要があり、コードを以下のように変更しました。これは、問題の解決に役立ちました。

ActionForm フォーム = 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);

今、専門家に立ち寄ってもらい、フィクスチャ コードで使用している標準が適切かどうか、または別のアプローチに従う必要があるかどうかを知らせてもらいたいと思います。

于 2013-03-28T10:54:43.890 に答える