Add methodCall option to HandlerResultMatchers
Issue: SPR-13736
This commit is contained in:
parent
1320da906b
commit
4b1183582a
|
|
@ -24,6 +24,7 @@ import org.springframework.test.web.servlet.MvcResult;
|
|||
import org.springframework.test.web.servlet.ResultMatcher;
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.web.method.HandlerMethod;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
|
||||
|
||||
|
|
@ -73,6 +74,38 @@ public class HandlerResultMatchers {
|
|||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert the controller method used to process the request. The expected
|
||||
* method is specified through a "mock" controller method invocation
|
||||
* similar to {@link MvcUriComponentsBuilder#fromMethodCall(Object)}.
|
||||
* <p>For example given this controller:
|
||||
* <pre class="code">
|
||||
* @RestController
|
||||
* static class SimpleController {
|
||||
*
|
||||
* @RequestMapping("/")
|
||||
* public ResponseEntity<Void> handle() {
|
||||
* return ResponseEntity.ok().build();
|
||||
* }
|
||||
* }
|
||||
* </pre>
|
||||
* <p>A test can be performed:
|
||||
* <pre class="code">
|
||||
* mockMvc.perform(get("/"))
|
||||
* .andExpect(handler().methodCall(on(SimpleController.class).handle()));
|
||||
* </pre>
|
||||
*/
|
||||
public ResultMatcher methodCall(final Object info) {
|
||||
return new ResultMatcher() {
|
||||
@Override
|
||||
public void match(MvcResult result) throws Exception {
|
||||
HandlerMethod handlerMethod = getHandlerMethod(result);
|
||||
Method method = ((MvcUriComponentsBuilder.MethodInvocationInfo) info).getControllerMethod();
|
||||
assertEquals("HandlerMethod", method, handlerMethod.getMethod());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert the name of the controller method used to process the request
|
||||
* using the given Hamcrest {@link Matcher}.
|
||||
|
|
|
|||
|
|
@ -21,17 +21,19 @@ import java.lang.reflect.Method;
|
|||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import static org.hamcrest.Matchers.*;
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
||||
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.hamcrest.Matchers.not;
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.handler;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;
|
||||
import static org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.on;
|
||||
|
||||
/**
|
||||
|
|
@ -53,6 +55,11 @@ public class HandlerAssertionTests {
|
|||
this.mockMvc.perform(get("/")).andExpect(handler().handlerType(SimpleController.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMethodCall() throws Exception {
|
||||
this.mockMvc.perform(get("/")).andExpect(handler().methodCall(on(SimpleController.class).handle()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHandlerMethodNameEqualTo() throws Exception {
|
||||
this.mockMvc.perform(get("/")).andExpect(handler().methodName("handle"));
|
||||
|
|
|
|||
Loading…
Reference in New Issue