📄 formcontrollertestsuite.java
字号:
/*
* Copyright 2002-2004 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.web.servlet.mvc;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import junit.framework.TestCase;
import org.springframework.beans.IndexedTestBean;
import org.springframework.beans.TestBean;
import org.springframework.context.support.StaticApplicationContext;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
import org.springframework.validation.FieldError;
import org.springframework.validation.Validator;
import org.springframework.web.context.support.StaticWebApplicationContext;
import org.springframework.web.mock.MockHttpServletRequest;
import org.springframework.web.mock.MockHttpServletResponse;
import org.springframework.web.mock.MockServletContext;
import org.springframework.web.servlet.ModelAndView;
/**
* @author Rod Johnson
* @author Juergen Hoeller
*/
public class FormControllerTestSuite extends TestCase {
public void testReferenceDataOnForm() throws Exception {
String formView = "f";
String successView = "s";
RefController mc = new RefController();
mc.setFormView(formView);
mc.setCommandName("tb");
mc.setSuccessView(successView);
mc.refDataCount = 0;
HttpServletRequest request = new MockHttpServletRequest(null, "GET", "/welcome.html");
HttpServletResponse response = new MockHttpServletResponse();
ModelAndView mv = mc.handleRequest(request, response);
assertTrue("returned correct view name", mv.getViewName().equals(formView));
assertTrue("refDataCount == 1", mc.refDataCount == 1);
TestBean person = (TestBean) mv.getModel().get(mc.getCommandName());
int[] numbers = (int[]) mv.getModel().get(mc.NUMBERS_ATT);
assertTrue("model is non null", person != null);
assertTrue("numbers is non null", numbers != null);
}
public void testReferenceDataOnResubmit() throws Exception {
String formView = "f";
String successView = "s";
RefController mc = new RefController();
mc.setFormView(formView);
mc.setCommandName("tb");
mc.setSuccessView(successView);
mc.refDataCount = 0;
MockHttpServletRequest request = new MockHttpServletRequest(null, "POST", "/welcome.html");
request.addParameter("age", "23x");
HttpServletResponse response = new MockHttpServletResponse();
ModelAndView mv = mc.handleRequest(request, response);
assertTrue("returned correct view name", mv.getViewName().equals(formView));
assertTrue("has errors", mv.getModel().get(BindException.ERROR_KEY_PREFIX + mc.getCommandName()) != null);
assertTrue("refDataCount == 1", mc.refDataCount == 1);
TestBean person = (TestBean) mv.getModel().get(mc.getCommandName());
int[] numbers = (int[]) mv.getModel().get(mc.NUMBERS_ATT);
assertTrue("model is non null", person != null);
assertTrue("numbers is non null", numbers != null);
}
public void testForm() throws Exception {
String formView = "f";
String successView = "s";
TestController mc = new TestController();
mc.setFormView(formView);
mc.setSuccessView(successView);
MockHttpServletRequest request = new MockHttpServletRequest(null, "GET", "/welcome.html");
request.addParameter("name", "rod");
HttpServletResponse response = new MockHttpServletResponse();
ModelAndView mv = mc.handleRequest(request, response);
assertTrue("returned correct view name", mv.getViewName().equals(formView));
TestBean person = (TestBean) mv.getModel().get(TestController.BEAN_NAME);
assertTrue("model is non null", person != null);
assertTrue("bean age default ok", person.getAge() == TestController.DEFAULT_AGE);
assertTrue("name not set", person.getName() == null);
}
public void testBindOnNewForm() throws Exception {
String formView = "f";
String successView = "s";
TestController mc = new TestController();
mc.setFormView(formView);
mc.setSuccessView(successView);
mc.setBindOnNewForm(true);
MockHttpServletRequest request = new MockHttpServletRequest(null, "GET", "/welcome.html");
request.addParameter("name", "rod");
HttpServletResponse response = new MockHttpServletResponse();
ModelAndView mv = mc.handleRequest(request, response);
assertTrue("returned correct view name", mv.getViewName().equals(formView));
TestBean person = (TestBean) mv.getModel().get(TestController.BEAN_NAME);
assertTrue("model is non null", person != null);
assertTrue("bean age default ok", person.getAge() == TestController.DEFAULT_AGE);
assertTrue("name set", "rod".equals(person.getName()));
}
public void testSubmitNoErrors() throws Exception {
String formView = "f";
String successView = "s";
TestController mc = new TestController();
mc.setFormView(formView);
mc.setSuccessView(successView);
String name = "Rod";
int age = 32;
MockHttpServletRequest request = new MockHttpServletRequest(null, "POST", "/welcome.html");
request.addParameter("name", name);
request.addParameter("age", "" + age);
HttpServletResponse response = new MockHttpServletResponse();
ModelAndView mv = mc.handleRequest(request, response);
assertEquals("returned correct view name", successView, mv.getViewName());
TestBean person = (TestBean) mv.getModel().get(TestController.BEAN_NAME);
Errors errors = (Errors) mv.getModel().get(BindException.ERROR_KEY_PREFIX + TestController.BEAN_NAME);
assertTrue("model is non null", person != null);
assertTrue("errors is non null", errors != null);
assertTrue("bean name bound ok", person.getName().equals(name));
assertTrue("bean age bound ok", person.getAge() == age);
}
public void testSubmitWithCustomOnSubmit() throws Exception {
String formView = "f";
TestControllerWithCustomOnSubmit mc = new TestControllerWithCustomOnSubmit();
mc.setFormView(formView);
String name = "Rod";
int age = 32;
MockHttpServletRequest request = new MockHttpServletRequest(null, "POST", "/welcome.html");
request.addParameter("name", name);
request.addParameter("age", "" + age);
HttpServletResponse response = new MockHttpServletResponse();
ModelAndView mv = mc.handleRequest(request, response);
assertEquals("returned correct view name", "mySuccess", mv.getViewName());
assertTrue("no model", mv.getModel().isEmpty());
}
public void testSubmitPassedByValidator() throws Exception {
String formView = "f";
String successView = "s";
TestController mc = new TestController();
mc.setFormView(formView);
mc.setSuccessView(successView);
mc.setValidator(new TestValidator());
String name = "Roderick Johnson";
int age = 32;
MockHttpServletRequest request = new MockHttpServletRequest(null, "POST", "/welcome.html");
request.addParameter("name", name);
request.addParameter("age", "" + age);
HttpServletResponse response = new MockHttpServletResponse();
ModelAndView mv = mc.handleRequest(request, response);
assertTrue("returned correct view name: expected '" + successView + "', not '" + mv.getViewName() + "'",
mv.getViewName().equals(successView));
TestBean person = (TestBean) mv.getModel().get(TestController.BEAN_NAME);
assertTrue("model is non null", person != null);
assertTrue("bean name bound ok", person.getName().equals(name));
assertTrue("bean age bound ok", person.getAge() == age);
}
public void testSubmit1Mismatch() throws Exception {
String formView = "fred";
String successView = "tony";
TestController mc = new TestController();
mc.setFormView(formView);
mc.setSuccessView(successView);
String name = "Rod";
String age = "xxx";
MockHttpServletRequest request = new MockHttpServletRequest(null, "POST", "/foo.html");
request.addParameter("name", name);
request.addParameter("age", "" + age);
HttpServletResponse response = new MockHttpServletResponse();
ModelAndView mv = mc.handleRequest(request, response);
assertTrue("returned correct view name: expected '" + formView + "', not '" + mv.getViewName() + "'",
mv.getViewName().equals(formView));
TestBean person = (TestBean) mv.getModel().get(mc.getCommandName());
assertTrue("model is non null", person != null);
assertTrue("bean name bound ok", person.getName().equals(name));
assertTrue("bean age is default", person.getAge() == TestController.DEFAULT_AGE);
Errors errors = (Errors) mv.getModel().get(BindException.ERROR_KEY_PREFIX + mc.getCommandName());
assertTrue("errors returned in model", errors != null);
assertTrue("One error", errors.getErrorCount() == 1);
FieldError fe = errors.getFieldError("age");
assertTrue("Saved invalid value", fe.getRejectedValue().equals(age));
assertTrue("Correct field", fe.getField().equals("age"));
}
public void testSubmit1Mismatch1Invalidated() throws Exception {
String formView = "fred";
String successView = "tony";
TestController mc = new TestController();
mc.setFormView(formView);
mc.setSuccessView(successView);
mc.setValidator(new TestValidator());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -