您可以以编程方式使用AnnotationMethodHandlerAdapter及其
handle方法。这将解决给定请求的方法并执行它。不幸的是,这有点间接。实际上,
ServletHandlerMethodResolver在AMHA中有一个私有类,该私有类负责仅解决给定请求的方法。我刚刚提出了对此主题进行改进的请求,因为我也很希望看到这种情况。
同时,您可以使用例如EasyMock创建控制器类的模拟,期望给定的方法被调用并将该模拟传递给
handle。
控制器:
@Controllerpublic class MyController { @RequestMapping("/users") public void foo(HttpServletResponse response) { // your controller pre }}测试:
public class RequestMappingTest { private MockHttpServletRequest request; private MockHttpServletResponse response; private MyController controller; private AnnotationMethodHandlerAdapter adapter; @Before public void setUp() { controller = EasyMock.createNiceMock(MyController.class); adapter = new AnnotationMethodHandlerAdapter(); request = new MockHttpServletRequest(); response = new MockHttpServletResponse(); } @Test public void testname() throws Exception { request.setRequestURI("/users"); controller.foo(response); EasyMock.expectLastCall().once(); EasyMock.replay(controller); adapter.handle(request, response, controller); EasyMock.verify(controller); }}问候,奥利



