Spring MockMvc 和 @AutoConfigureMockMvc() 在请求中设置标头

mik*_*keb 4 spring spring-mvc spring-boot

我正在使用 Spring Boot 并设置了 Spring Security 以使用令牌授权。我的测试设置如下:

@RunWith(SpringRunner.class)
@SpringBootTest(properties = {
})
@AutoConfigureMockMvc()
@EnableAutoConfiguration(exclude = {
})
public class ApplicationTests {
@Test
        public void shouldReturnRepositoryIndex() throws Exception {

            mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk()).andExpect(
                    jsonPath("$._links.people").exists());
        }
}
Run Code Online (Sandbox Code Playgroud)

我需要get("/")发送一个标题“X-AUTH: SOMETOKEN”

我怎么做?

Ale*_*981 16

.header("X-AUTH" , "SOMETOKEN") 应该管用。

这是修改后的 mockMvc 代码:

mockMvc.perform(get("/").header("X-AUTH" , "SOMETOKEN")).andDo(print()).andExpect(status().isOk()).andExpect(
            jsonPath("$._links.people").exists());
Run Code Online (Sandbox Code Playgroud)

输出是:

MockHttpServletRequest:
  HTTP Method = GET
  Request URI = /
   Parameters = {}
      Headers = {X-AUTH=[SOMETOKEN]}
Run Code Online (Sandbox Code Playgroud)