⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userformcontrollerjmtest.java

📁 springlive ch8
💻 JAVA
字号:
package org.appfuse.web;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.appfuse.model.User;
import org.appfuse.service.UserManager;
import org.jmock.Mock;
import org.jmock.MockObjectTestCase;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.context.support.StaticApplicationContext;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
import org.springframework.web.servlet.ModelAndView;


public class UserFormControllerJMTest extends MockObjectTestCase {
    private static Log log = LogFactory.getLog(UserFormControllerJMTest.class);
    private UserFormController c = new UserFormController();
    private MockHttpServletRequest request = null;
    private ModelAndView mv = null;
    private User user = new User();
    private Mock mockManager = null;

    protected void setUp() throws Exception {
        super.setUp();
        mockManager = new Mock(UserManager.class);
        
        // manually set properties (dependencies) on userFormController
        c.setUserManager((UserManager) mockManager.proxy());
        c.setFormView("userForm");
        
        // set context with messages avoid NPE when controller calls 
        // getMessageSourceAccessor().getMessage()
        StaticApplicationContext ctx = new StaticApplicationContext();
        Map properties = new HashMap();
        properties.put("basename", "messages");
        ctx.registerSingleton("messageSource", ResourceBundleMessageSource.class, 
                              new MutablePropertyValues(properties));
        ctx.refresh();
        c.setApplicationContext(ctx);    
        
        // setup user values
        user.setId(new Long(1));
        user.setFirstName("Matt");
        user.setLastName("Raible");
    }
    
    public void testEdit() throws Exception {
        log.debug("testing edit...");
        
        // set expected behavior on manager
        mockManager.expects(once()).method("getUser")
                   .will(returnValue(new User()));
        
        request = new MockHttpServletRequest("GET", "/editUser.html");
        request.addParameter("id", user.getId().toString());
        mv = c.handleRequest(request, new MockHttpServletResponse());
        assertEquals("userForm", mv.getViewName());
        
        // verify expectations
        mockManager.verify();
    }

    public void testSave() throws Exception {
        // set expected behavior on manager
        // called by formBackingObject()
        mockManager.expects(once()).method("getUser")
                   .will(returnValue(user));
        
        User savedUser = user;
        savedUser.setLastName("Updated Last Name");
        // called by onSubmit()
        mockManager.expects(once()).method("saveUser")
                   .with(eq(savedUser));
        
        request = new MockHttpServletRequest("POST", "/editUser.html");
        request.addParameter("id", user.getId().toString());
        request.addParameter("firstName", user.getFirstName());
        request.addParameter("lastName", "Updated Last Name");
        mv = c.handleRequest(request, new MockHttpServletResponse());
        Errors errors =
            (Errors) mv.getModel().get(BindException.ERROR_KEY_PREFIX + "user");
        assertNull(errors);
        assertNotNull(request.getSession().getAttribute("message"));
        
        // verify expectations
        mockManager.verify();
    }
    
    public void testRemove() throws Exception {
        // set expected behavior on manager
        // called by formBackingObject()
        mockManager.expects(once()).method("getUser")
                   .will(returnValue(user));
        // called by onSubmit()
        mockManager.expects(once()).method("removeUser").with(eq("1"));
        
    	request = new MockHttpServletRequest("POST", "/editUser.html");
        request.addParameter("delete", "");
        request.addParameter("id", user.getId().toString());
        mv = c.handleRequest(request, new MockHttpServletResponse());
        assertNotNull(request.getSession().getAttribute("message"));
        
        // verify expectations
        mockManager.verify();
    }   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -