Introduce AbstractMockMvcBuilder class

This change splits out an abstract base class from DefaultMockMvcBuilder
with StandaloneMockMvcBuilder switching to extend the new abstract class
(rather than DefaultMockMvcBuilder).

Issue: SPR-11238
This commit is contained in:
Rossen Stoyanchev
2013-12-23 14:02:48 -05:00
parent e3017c30bb
commit 2e4f38f6af
7 changed files with 253 additions and 188 deletions

View File

@@ -35,7 +35,7 @@ import org.springframework.web.filter.OncePerRequestFilter;
*/
public class DefaultMockMvcBuilderTests {
private DefaultMockMvcBuilder<?> builder;
private StandaloneMockMvcBuilder builder;
@Before
public void setup() {

View File

@@ -21,6 +21,7 @@ import org.springframework.mock.web.test.MockHttpServletRequest;
import org.springframework.mock.web.test.MockServletContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerExecutionChain;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
@@ -38,12 +39,11 @@ public class StandaloneMockMvcBuilderTests {
@Test
public void placeHoldersInRequestMapping() throws Exception {
StubWebApplicationContext cxt = new StubWebApplicationContext(new MockServletContext());
StandaloneMockMvcBuilder builder = new StandaloneMockMvcBuilder(new PlaceholderController());
TestStandaloneMockMvcBuilder builder = new TestStandaloneMockMvcBuilder(new PlaceholderController());
builder.addPlaceHolderValue("sys.login.ajax", "/foo");
builder.initWebAppContext(cxt);
builder.build();
RequestMappingHandlerMapping hm = cxt.getBean(RequestMappingHandlerMapping.class);
RequestMappingHandlerMapping hm = builder.wac.getBean(RequestMappingHandlerMapping.class);
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/foo");
HandlerExecutionChain chain = hm.getHandler(request);
@@ -60,4 +60,19 @@ public class StandaloneMockMvcBuilderTests {
private void handleWithPlaceholders() { }
}
private static class TestStandaloneMockMvcBuilder extends StandaloneMockMvcBuilder {
private WebApplicationContext wac;
private TestStandaloneMockMvcBuilder(Object... controllers) {
super(controllers);
}
@Override
protected WebApplicationContext initWebAppContext() {
this.wac = super.initWebAppContext();
return this.wac;
}
}
}