Spring MockMvc:初始化测试时如何访问Request Object

时间:2017-05-30 10:51:29

标签: spring-test-mvc

我需要访问mockMvc的请求进行初始化。

@Before
public void setup() {
  this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac.build());

  // TODO how to get request out of mockMvc?
  request = ???      

  SomeUtils.init(request)
}

@Test
public void test() throws Exception {   
  final ResultActions result = this.mockMvc.perform(uri);
}

我尝试使用自己的RequestBuilder。但这并不奏效。如果您认为这是正确的解决方案,我可以提供更多详细信息。

... .defaultRequest(new RequestBuilder() { ...

PS 不要责怪我使用静态方法。这是第三方代码!

1 个答案:

答案 0 :(得分:2)

我使用Spring 3,所以你的里程可能会有所不同但我最后通过创建一个自定义的javax.servlet.Filter并使用addFilter方法将它添加到MockMvcBuilders对象来实现这一目的。

 .addFilter(new Filter() {
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
          SomeUtils.init(request)
          chain.doFilter(request, response);
        }
        ...
      })

(很想知道是否有更好的方法。)