Spring MockMvc:如何在初始化测试时访问请求对象

Spring MockMvc: How to access Request Object while initializing test

我需要访问我的 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 不要怪我使用静态方法。这是第三方代码!

我正在使用 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);
        }
        ...
      })

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