<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    honzeland

    記錄點滴。。。

    常用鏈接

    統計

    Famous Websites

    Java

    Linux

    P2P

    最新評論

    JMock Examples

    The following is a simple example of a servlet we will write unit tests for:

    The servlet:
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.ServletException;
    import java.io.IOException;
    import java.util.Map;

    public class MyServlet extends HttpServlet {
        private MyService myService;
        public void setMyService(MyService myService) {
            this.myService = myService;
        }

        public void process(HttpServletRequest request, HttpServletResponse response) {
            String action = request.getParameter("action");
            if ("update".equals(action)) {
                Map parameters = request.getParameterMap();
                try {
                    myService.updateModel(parameters);
                } catch (MyException e) {
                    request.setAttribute("error", e.getMessage());
                }
            }
            request.setAttribute("model", myService.getModel());
            getServletContext().getRequestDispatcher("myView.jsp").forward(request, response);
        }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            process(request, response);
        }
    }

    The unit test:
        * if the action is update, does it call myService.updateModel (example is below)
        * if myService.updateModel throws an exception does the response contain the exceptions message (not implemented below)
    import org.jmock.Mock;
    import org.jmock.MockObjectTestCase;
    public class MyServletTest extends MockObjectTestCase {
        private Mock mockMyService;
        private Mock mockRequest;
        private Mock mockResponse;
        private MyService myService;
        private HttpServletRequest request;
        private HttpServletResponse response;
        private MyServlet myServlet;
        
        protected void setUp() throws java.lang.Exception {
            mockMyService = mock(MyService.class);
            mockRequest = mock(HttpServletRequest.class);
            mockResponse = mock(HttpServletResponse.class);
            myService = (MyService) mockMyService.proxy();
            request = (HttpServletRequest) mockRequest.proxy();
            response = (HttpServletResponse) mockResponse.proxy();
            myServlet = new MyServlet();
        }

        public void testUpdate() {
            // SETUP ANY OBJECTS USED ONLY IN THIS TESTCASE
            Map parameters = new Hashtable();
            // SETUP THE EXPECTED CALLS TO THE MOCK OBJECTS
            // setup the mock request object to have the getParameter
            // method called once with argument being equal to the
            // string action and have it return the string update
            mockRequest.expects(once()).method("getParameter").
                with(eq("action")).will(returnValue("update"));
            // setup the mock request object to have the getParameterMap
            // method called once with no arguments and have it
            // return an empty map
            mockRequest.expects(once()).method("getParameterMap")
                .will(returnValue(parameters));
            // setup the mock myService object to have the updateModel
            // method called once with the parameters map as the
            // argument
            mockMyService.expects(once()).method("updateModel").with(same(parameters));
            // setup the mock myService object to have the getModel
            // method called once with no arguments and have it
            // return an empty map
            mockMyService.expects(once()).method("getModel")
                .will(returnValue(parameters));
            // setup the mock myService object to have the updateModel
            // method called once with the parameters map as the
            // argument
            mockRequest.expects(once()).method("setAttribute").with(eq("model"), same(parameters));
            // RUN THE TEST
            // add the myService mock object to the servlet so
            // that it can handle calls later
            myServlet.setMyService(myService);
            myServlet.process(request, response);
        }
    }



    posted on 2007-12-13 12:45 honzeland 閱讀(1441) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 午夜在线免费视频| 国产va免费精品观看精品| 亚洲日韩一页精品发布| 女人体1963午夜免费视频| 亚洲精品免费在线视频| 亚洲AV无码成人精品区大在线| 久久免费国产视频| AV激情亚洲男人的天堂国语| 亚洲AV成人片色在线观看高潮| 日韩免费a级在线观看| 免费视频成人片在线观看| 亚洲av无码一区二区三区天堂| 亚洲国产精品一区第二页| 永久免费视频v片www| 久久久久久影院久久久久免费精品国产小说 | kk4kk免费视频毛片| 亚洲最大的视频网站| 亚洲国产精品人人做人人爱| 国产成人一区二区三区视频免费| 婷婷国产偷v国产偷v亚洲| 亚洲另类精品xxxx人妖| 国产亚洲精品岁国产微拍精品| a级毛片无码免费真人| 国产免费内射又粗又爽密桃视频| 亚洲人成网站在线观看播放青青| 免费一级毛片在线观看| 国产精品久久免费| 国产精品偷伦视频观看免费| www免费黄色网| 7777久久亚洲中文字幕蜜桃| 久久精品国产亚洲AV麻豆王友容 | 亚洲一区二区三区在线| 亚洲国产电影在线观看| 亚洲黄色在线播放| 亚洲自偷自拍另类图片二区| 久久精品国产亚洲av影院| 亚洲综合久久成人69| 亚洲中字慕日产2020| 亚洲人成77777在线观看网| 亚洲午夜无码久久| 久久久久久亚洲av无码蜜芽|