提交 f7943786 编写于 作者: R Rossen Stoyanchev

Polish Spring MVC Test code

Remove use of UriTemplate in MockMvcRequestBuilders.
Rely on UriComponentsBuilder instead.

Decode query params before setting them on MockHttpServletRequest.

Add more options to model result matching for the count of errors.

Ignore white spaces and comments when comparing XML.
上级 1858ef10
......@@ -16,8 +16,8 @@
package org.springframework.test.web.mock.servlet.request;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Constructor;
import java.net.URI;
import java.security.Principal;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -31,9 +31,9 @@ import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.http.Cookie;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.Mergeable;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.BeanUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
......@@ -58,6 +58,7 @@ import org.springframework.web.servlet.FlashMapManager;
import org.springframework.web.servlet.support.SessionFlashMapManager;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;
import org.springframework.web.util.UriUtils;
/**
* Default builder for {@link MockHttpServletRequest} required as input to
......@@ -72,7 +73,7 @@ import org.springframework.web.util.UriComponentsBuilder;
*/
public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable {
private final UriComponentsBuilder uriComponentsBuilder;
private final UriComponents uriComponents;
private final HttpMethod method;
......@@ -120,15 +121,15 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable
* the {@code MockHttpServletRequest} can be plugged in via
* {@link #with(RequestPostProcessor)}.
*
* @param uri the URI for the request including any component (e.g. scheme, host, query)
* @param httpMethod the HTTP method for the request
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
MockHttpServletRequestBuilder(URI uri, HttpMethod httpMethod) {
MockHttpServletRequestBuilder(HttpMethod httpMethod, String urlTemplate, Object... urlVariables) {
Assert.notNull(uri, "uri is required");
Assert.notNull(urlTemplate, "uriTemplate is required");
Assert.notNull(httpMethod, "httpMethod is required");
this.uriComponentsBuilder = UriComponentsBuilder.fromUri(uri);
this.uriComponents = UriComponentsBuilder.fromUriString(urlTemplate).buildAndExpand(urlVariables).encode();
this.method = httpMethod;
}
......@@ -196,7 +197,7 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable
*
* @param content the body content
*/
public MockHttpServletRequestBuilder body(byte[] content) {
public MockHttpServletRequestBuilder content(byte[] content) {
this.content = content;
return this;
}
......@@ -532,21 +533,19 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable
MockHttpServletRequest request = createServletRequest(servletContext);
UriComponents uriComponents = this.uriComponentsBuilder.build();
String requestUri = uriComponents.getPath();
String requestUri = this.uriComponents.getPath();
request.setRequestURI(requestUri);
updatePathRequestProperties(request, requestUri);
if (uriComponents.getScheme() != null) {
request.setScheme(uriComponents.getScheme());
if (this.uriComponents.getScheme() != null) {
request.setScheme(this.uriComponents.getScheme());
}
if (uriComponents.getHost() != null) {
if (this.uriComponents.getHost() != null) {
request.setServerName(uriComponents.getHost());
}
if (uriComponents.getPort() != -1) {
request.setServerPort(uriComponents.getPort());
if (this.uriComponents.getPort() != -1) {
request.setServerPort(this.uriComponents.getPort());
}
request.setMethod(this.method.name());
......@@ -557,13 +556,23 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable
}
}
request.setQueryString(uriComponents.getQuery());
try {
if (this.uriComponents.getQuery() != null) {
String query = UriUtils.decode(this.uriComponents.getQuery(), "UTF-8");
request.setQueryString(query);
}
for (Entry<String, List<String>> entry : uriComponents.getQueryParams().entrySet()) {
for (String value : entry.getValue()) {
request.addParameter(entry.getKey(), value);
for (Entry<String, List<String>> entry : this.uriComponents.getQueryParams().entrySet()) {
for (String value : entry.getValue()) {
request.addParameter(
UriUtils.decode(entry.getKey(), "UTF-8"),
UriUtils.decode(value, "UTF-8"));
}
}
}
catch (UnsupportedEncodingException ex) {
// shouldn't happen
}
for (String name : this.parameters.keySet()) {
for (String value : this.parameters.get(name)) {
......
......@@ -17,7 +17,6 @@
package org.springframework.test.web.mock.servlet.request;
import java.lang.reflect.Constructor;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
......@@ -51,9 +50,12 @@ public class MockMultipartHttpServletRequestBuilder extends MockHttpServletReque
* <p>For other ways to initialize a {@code MockMultipartHttpServletRequest},
* see {@link #with(RequestPostProcessor)} and the
* {@link RequestPostProcessor} extension point.
*
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
MockMultipartHttpServletRequestBuilder(URI uri) {
super(uri, HttpMethod.POST);
MockMultipartHttpServletRequestBuilder(String urlTemplate, Object... urlVariables) {
super(HttpMethod.POST, urlTemplate, urlVariables);
super.contentType(MediaType.MULTIPART_FORM_DATA);
}
......
......@@ -15,11 +15,8 @@
*/
package org.springframework.test.web.mock.servlet.request;
import java.net.URI;
import org.springframework.http.HttpMethod;
import org.springframework.test.web.mock.servlet.RequestBuilder;
import org.springframework.web.util.UriTemplate;
/**
* Static factory methods for {@link RequestBuilder}s.
......@@ -39,69 +36,51 @@ public abstract class MockMvcRequestBuilders {
/**
* Create a {@link MockHttpServletRequestBuilder} for a GET request.
*
* @param urlTemplate a URI template including any component (e.g. scheme, host, query)
* @param urlVariables zero or more URI variables
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
public static MockHttpServletRequestBuilder get(String urlTemplate, Object... urlVariables) {
return request(HttpMethod.GET, urlTemplate, urlVariables);
return new MockHttpServletRequestBuilder(HttpMethod.GET, urlTemplate, urlVariables);
}
/**
* Create a {@link MockHttpServletRequestBuilder} for a POST request.
*
* @param urlTemplate a URI template including any component (e.g. scheme, host, query)
* @param urlVariables zero or more URI variables
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
public static MockHttpServletRequestBuilder post(String urlTemplate, Object... urlVariables) {
return request(HttpMethod.POST, urlTemplate, urlVariables);
return new MockHttpServletRequestBuilder(HttpMethod.POST, urlTemplate, urlVariables);
}
/**
* Create a {@link MockHttpServletRequestBuilder} for a PUT request.
*
* @param urlTemplate a URI template including any component (e.g. scheme, host, query)
* @param urlVariables zero or more URI variables
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
public static MockHttpServletRequestBuilder put(String urlTemplate, Object... urlVariables) {
return request(HttpMethod.PUT, urlTemplate, urlVariables);
return new MockHttpServletRequestBuilder(HttpMethod.PUT, urlTemplate, urlVariables);
}
/**
* Create a {@link MockHttpServletRequestBuilder} for a DELETE request.
*
* @param urlTemplate a URI template including any component (e.g. scheme, host, query)
* @param urlVariables zero or more URI variables
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
public static MockHttpServletRequestBuilder delete(String urlTemplate, Object... urlVariables) {
return request(HttpMethod.DELETE, urlTemplate, urlVariables);
return new MockHttpServletRequestBuilder(HttpMethod.DELETE, urlTemplate, urlVariables);
}
/**
* Create a {@link MockHttpServletRequestBuilder} for a multipart request.
*
* @param urlTemplate a URI template including any component (e.g. scheme, host, query)
* @param urlVariables zero or more URI variables
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
public static MockMultipartHttpServletRequestBuilder fileUpload(String urlTemplate, Object... urlVariables) {
URI url = expandUrl(urlTemplate, urlVariables);
return new MockMultipartHttpServletRequestBuilder(url);
}
/**
* Create a {@link MockHttpServletRequestBuilder} for any HTTP method.
*
* @param httpMethod the HTTP method
* @param urlTemplate a URI template including any component (e.g. scheme, host, query)
* @param urlVariables zero or more URI variables
*/
private static MockHttpServletRequestBuilder request(HttpMethod httpMethod, String urlTemplate, Object... urlVariables) {
URI url = expandUrl(urlTemplate, urlVariables);
return new MockHttpServletRequestBuilder(url, httpMethod);
}
private static URI expandUrl(String urlTemplate, Object[] urlVariables) {
UriTemplate uriTemplate = new UriTemplate(urlTemplate);
return uriTemplate.expand(urlVariables);
return new MockMultipartHttpServletRequestBuilder(urlTemplate, urlVariables);
}
}
......@@ -57,14 +57,14 @@ public class ContentResultMatchers {
/**
* Assert the ServletResponse content type.
*/
public ResultMatcher mimeType(String contentType) {
return mimeType(MediaType.parseMediaType(contentType));
public ResultMatcher contentType(String contentType) {
return contentType(MediaType.parseMediaType(contentType));
}
/**
* Assert the ServletResponse content type after parsing it as a MediaType.
*/
public ResultMatcher mimeType(final MediaType contentType) {
public ResultMatcher contentType(final MediaType contentType) {
return new ResultMatcher() {
public void match(MvcResult result) throws Exception {
String actual = result.getResponse().getContentType();
......
......@@ -24,7 +24,9 @@ import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.springframework.test.web.mock.servlet.MvcResult;
import org.springframework.test.web.mock.servlet.ResultMatcher;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.validation.Errors;
import org.springframework.web.servlet.ModelAndView;
/**
......@@ -51,8 +53,7 @@ public class ModelResultMatchers {
return new ResultMatcher() {
@SuppressWarnings("unchecked")
public void match(MvcResult result) throws Exception {
ModelAndView mav = result.getModelAndView();
assertTrue("No ModelAndView found", mav != null);
ModelAndView mav = getModelAndView(result);
MatcherAssert.assertThat("Model attribute '" + name + "'", (T) mav.getModel().get(name), matcher);
}
};
......@@ -79,6 +80,20 @@ public class ModelResultMatchers {
};
}
/**
* Assert the given model attribute(s) have errors.
*/
public ResultMatcher attributeErrorCount(final String name, final int expectedCount) {
return new ResultMatcher() {
public void match(MvcResult result) throws Exception {
ModelAndView mav = getModelAndView(result);
Errors errors = getBindingResult(mav, name);
assertEquals("Binding/validation error count for attribute [" + name + "], ",
expectedCount, errors.getErrorCount());
}
};
}
/**
* Assert the given model attribute(s) have errors.
*/
......@@ -88,7 +103,7 @@ public class ModelResultMatchers {
ModelAndView mav = getModelAndView(mvcResult);
for (String name : names) {
BindingResult result = getBindingResult(mav, name);
assertTrue("No errors for attribute: " + name, result.hasErrors());
assertTrue("No errors for attribute [" + name + "]", result.hasErrors());
}
}
};
......@@ -103,7 +118,7 @@ public class ModelResultMatchers {
ModelAndView mav = getModelAndView(mvcResult);
for (String name : names) {
BindingResult result = getBindingResult(mav, name);
assertTrue("No errors for attribute: " + name, !result.hasErrors());
assertTrue("No errors for attribute [" + name + "]", !result.hasErrors());
}
}
};
......@@ -117,15 +132,39 @@ public class ModelResultMatchers {
public void match(MvcResult mvcResult) throws Exception {
ModelAndView mav = getModelAndView(mvcResult);
BindingResult result = getBindingResult(mav, name);
assertTrue("No errors for attribute: '" + name + "'", result.hasErrors());
assertTrue("No errors for attribute: [" + name + "]", result.hasErrors());
for (final String fieldName : fieldNames) {
assertTrue("No errors for field: '" + fieldName + "' of attribute: " + name,
assertTrue("No errors for field: [" + fieldName + "] of attribute [" + name + "]",
result.hasFieldErrors(fieldName));
}
}
};
}
/**
* Assert the total number of errors in the model.
*/
public <T> ResultMatcher errorCount(final int expectedCount) {
return new ResultMatcher() {
public void match(MvcResult result) throws Exception {
int actualCount = getErrorCount(getModelAndView(result).getModelMap());
assertEquals("Binding/validation error count", expectedCount, actualCount);
}
};
}
/**
* Assert the model has errors.
*/
public <T> ResultMatcher hasErrors() {
return new ResultMatcher() {
public void match(MvcResult result) throws Exception {
int count = getErrorCount(getModelAndView(result).getModelMap());
assertTrue("Expected binding/validation errors", count != 0);
}
};
}
/**
* Assert the model has no errors.
*/
......@@ -134,8 +173,9 @@ public class ModelResultMatchers {
public void match(MvcResult result) throws Exception {
ModelAndView mav = getModelAndView(result);
for (Object value : mav.getModel().values()) {
if (value instanceof BindingResult) {
assertTrue("Unexpected binding error(s): " + value, !((BindingResult) value).hasErrors());
if (value instanceof Errors) {
assertTrue("Unexpected binding/validation error(s) [" + value + "]",
!((Errors) value).hasErrors());
}
}
}
......@@ -172,4 +212,14 @@ public class ModelResultMatchers {
return result;
}
private int getErrorCount(ModelMap model) {
int count = 0;
for (Object value : model.values()) {
if (value instanceof Errors) {
count += ((Errors) value).getErrorCount();
}
}
return count;
}
}
......@@ -85,6 +85,11 @@ public class XmlExpectationsHelper {
* @see MockMvcResultMatchers#xpath(String, Map, Object...)
*/
public void assertXmlEqual(String expected, String actual) throws Exception {
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreAttributeOrder(true);
Document control = XMLUnit.buildControlDocument(expected);
Document test = XMLUnit.buildTestDocument(actual);
Diff diff = new Diff(control, test);
......
......@@ -20,7 +20,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.net.URI;
import java.security.Principal;
import java.util.Arrays;
import java.util.Collections;
......@@ -40,7 +39,6 @@ import org.springframework.http.MediaType;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpSession;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.web.mock.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.servlet.FlashMap;
import org.springframework.web.servlet.support.SessionFlashMapManager;
......@@ -59,7 +57,7 @@ public class MockHttpServletRequestBuilderTests {
@Before
public void setUp() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/foo/bar"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo/bar");
servletContext = new MockServletContext();
}
......@@ -72,8 +70,8 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void uri() throws Exception {
URI uri = new URI("https://java.sun.com:8080/javase/6/docs/api/java/util/BitSet.html?foo=bar#and(java.util.BitSet)");
this.builder = new MockHttpServletRequestBuilder(uri, HttpMethod.GET);
String uri = "https://java.sun.com:8080/javase/6/docs/api/java/util/BitSet.html?foo=bar#and(java.util.BitSet)";
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, uri);
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertEquals("https", request.getScheme());
......@@ -86,8 +84,8 @@ public class MockHttpServletRequestBuilderTests {
}
@Test
public void requestUriEncodedPath() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/foo%20bar"), HttpMethod.GET);
public void requestUriWithEncoding() throws Exception {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo bar");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertEquals("/foo%20bar", request.getRequestURI());
......@@ -95,7 +93,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void contextPathEmpty() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/foo"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
......@@ -106,7 +104,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void contextPathServletPathEmpty() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/travel/hotels/42"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/travel/hotels/42");
this.builder.contextPath("/travel");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
......@@ -118,7 +116,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void contextPathServletPath() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/travel/main/hotels/42"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/travel/main/hotels/42");
this.builder.contextPath("/travel");
this.builder.servletPath("/main");
......@@ -131,7 +129,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void contextPathServletPathInfoEmpty() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/travel/hotels/42"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/travel/hotels/42");
this.builder.contextPath("/travel");
this.builder.servletPath("/hotels/42");
......@@ -145,7 +143,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void contextPathServletPathInfo() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/");
this.builder.servletPath("/index.html");
this.builder.pathInfo(null);
......@@ -181,7 +179,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void requestUriAndFragment() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/foo#bar"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo#bar");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertEquals("/foo", request.getRequestURI());
......@@ -199,7 +197,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void requestParameterFromQuery() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/?foo=bar&foo=baz"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/?foo=bar&foo=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
Map<String, String[]> parameterMap = request.getParameterMap();
......@@ -209,13 +207,24 @@ public class MockHttpServletRequestBuilderTests {
}
@Test
public void requestParametersFromQuery_i18n() throws Exception {
URI uri = new URI("/?foo=I%C3%B1t%C3%ABrn%C3%A2ti%C3%B4n%C3%A0liz%C3%A6ti%C3%B8n");
this.builder = new MockHttpServletRequestBuilder(uri, HttpMethod.GET);
public void requestParameterFromQueryList() throws Exception {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/?foo[0]=bar&foo[1]=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertEquals("foo[0]=bar&foo[1]=baz", request.getQueryString());
assertEquals("bar", request.getParameter("foo[0]"));
assertEquals("baz", request.getParameter("foo[1]"));
}
@Test
public void requestParameterFromQueryWithEncoding() throws Exception {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/?foo={value}", "bar=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertEquals("I%C3%B1t%C3%ABrn%C3%A2ti%C3%B4n%C3%A0liz%C3%A6ti%C3%B8n", request.getParameter("foo"));
assertEquals("foo=I%C3%B1t%C3%ABrn%C3%A2ti%C3%B4n%C3%A0liz%C3%A6ti%C3%B8n", request.getQueryString());
assertEquals("foo=bar=baz", request.getQueryString());
assertEquals("bar=baz", request.getParameter("foo"));
}
@Test
......@@ -247,7 +256,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void body() throws Exception {
byte[] body = "Hello World".getBytes("UTF-8");
this.builder.body(body);
this.builder.content(body);
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
byte[] result = FileCopyUtils.copyToByteArray(request.getInputStream());
......
......@@ -29,12 +29,12 @@ public class ContentResultMatchersTests {
@Test
public void typeMatches() throws Exception {
new ContentResultMatchers().mimeType("application/json;charset=UTF-8").match(getStubMvcResult());
new ContentResultMatchers().contentType("application/json;charset=UTF-8").match(getStubMvcResult());
}
@Test(expected=AssertionError.class)
public void typeNoMatch() throws Exception {
new ContentResultMatchers().mimeType("text/plain").match(getStubMvcResult());
new ContentResultMatchers().contentType("text/plain").match(getStubMvcResult());
}
@Test
......
......@@ -68,7 +68,7 @@ public class WebAppResourceTests {
@Test
public void resourceRequest() throws Exception {
this.mockMvc.perform(get("/resources/Spring.js"))
.andExpect(content().mimeType("text/javascript"))
.andExpect(content().contentType("text/javascript"))
.andExpect(content().string(containsString("Spring={};")));
}
......
......@@ -42,7 +42,7 @@ public class RequestParameterTests {
standaloneSetup(new PersonController()).build()
.perform(get("/search?name=George").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().mimeType("application/json;charset=UTF-8"))
.andExpect(content().contentType("application/json;charset=UTF-8"))
.andExpect(jsonPath("$.name").value("George"));
}
......
......@@ -41,7 +41,7 @@ public class ResponseBodyTests {
standaloneSetup(new PersonController()).build()
.perform(get("/person/Lee").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().mimeType("application/json;charset=UTF-8"))
.andExpect(content().contentType("application/json;charset=UTF-8"))
.andExpect(jsonPath("$.name").value("Lee"));
}
......
......@@ -77,7 +77,7 @@ public class ViewResolutionTests {
standaloneSetup(new PersonController()).setSingleView(new MappingJacksonJsonView()).build()
.perform(get("/person/Corea"))
.andExpect(status().isOk())
.andExpect(content().mimeType(MediaType.APPLICATION_JSON))
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$.person.name").value("Corea"));
}
......@@ -90,7 +90,7 @@ public class ViewResolutionTests {
standaloneSetup(new PersonController()).setSingleView(new MarshallingView(marshaller)).build()
.perform(get("/person/Corea"))
.andExpect(status().isOk())
.andExpect(content().mimeType(MediaType.APPLICATION_XML))
.andExpect(content().contentType(MediaType.APPLICATION_XML))
.andExpect(xpath("/person/name/text()").string(equalTo("Corea")));
}
......@@ -125,12 +125,12 @@ public class ViewResolutionTests {
mockMvc.perform(get("/person/Corea").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().mimeType(MediaType.APPLICATION_JSON))
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$.person.name").value("Corea"));
mockMvc.perform(get("/person/Corea").accept(MediaType.APPLICATION_XML))
.andExpect(status().isOk())
.andExpect(content().mimeType(MediaType.APPLICATION_XML))
.andExpect(content().contentType(MediaType.APPLICATION_XML))
.andExpect(xpath("/person/name/text()").string(equalTo("Corea")));
}
......
......@@ -52,12 +52,12 @@ public class ContentAssertionTests {
@Test
public void testContentType() throws Exception {
this.mockMvc.perform(get("/handle"))
.andExpect(content().mimeType(MediaType.TEXT_PLAIN))
.andExpect(content().mimeType("text/plain"));
.andExpect(content().contentType(MediaType.TEXT_PLAIN))
.andExpect(content().contentType("text/plain"));
this.mockMvc.perform(get("/handleUtf8"))
.andExpect(content().mimeType(MediaType.valueOf("text/plain;charset=UTF-8")))
.andExpect(content().mimeType("text/plain;charset=UTF-8"));
.andExpect(content().contentType(MediaType.valueOf("text/plain;charset=UTF-8")))
.andExpect(content().contentType("text/plain;charset=UTF-8"));
}
@Test
......
......@@ -57,7 +57,7 @@ public class JsonPathAssertionTests {
this.mockMvc = standaloneSetup(new MusicController())
.defaultRequest(get("/").accept(MediaType.APPLICATION_JSON))
.alwaysExpect(status().isOk())
.alwaysExpect(content().mimeType("application/json;charset=UTF-8"))
.alwaysExpect(content().contentType("application/json;charset=UTF-8"))
.build();
}
......
......@@ -67,7 +67,7 @@ public class XmlContentAssertionTests {
this.mockMvc = standaloneSetup(new MusicController())
.defaultRequest(get("/").accept(MediaType.APPLICATION_XML))
.alwaysExpect(status().isOk())
.alwaysExpect(content().mimeType(MediaType.APPLICATION_XML))
.alwaysExpect(content().contentType(MediaType.APPLICATION_XML))
.build();
}
......
......@@ -63,7 +63,7 @@ public class XpathAssertionTests {
this.mockMvc = standaloneSetup(new MusicController())
.defaultRequest(get("/").accept(MediaType.APPLICATION_XML))
.alwaysExpect(status().isOk())
.alwaysExpect(content().mimeType(MediaType.APPLICATION_XML))
.alwaysExpect(content().contentType(MediaType.APPLICATION_XML))
.build();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册