spring – MockMvc为所有请求配置标头

在我的测试中,我在@Before中设置了MockMvc对象

mockMvc = MockMvcBuilders.webAppContextSetup(context)
                .apply(springSecurity())
                .build();

在我做的每个请求中,我总是需要发送相同的标题.
有没有办法配置MockMvc将在全局或每个测试类中使用的头文件?

最佳答案
如果您已经使用已经decrorated-with-headers请求创建了一个工厂类?由于MockHttpServletRequestBuilder是一个构建器,因此您只需使用所需的任何其他属性(参数,内容类型等)来装饰请求.建造者专为此目的而设计!例如:

public class MyTestRequestFactory {

    public static MockHttpServletRequestBuilder myFactoryRequest(String url) {
        return MockMvcRequestBuilders.get(url)
                .header("myKey", "myValue")
                .header("myKey2", "myValue2");
    }
}

然后在你的测试中:

@Test
public void whenITestUrlWithFactoryRequest_thenStatusIsOK() throws Exception {

    mockMvc()
        .perform(MyTestRequestFactory.myFactoryRequest("/my/test/url"))
        .andExpect(status().isOk());
}

@Test
public void whenITestAnotherUrlWithFactoryRequest_thenStatusIsOK() throws Exception {

    mockMvc()
        .perform(MyTestRequestFactory.myFactoryRequest("/my/test/other/url"))
        .andExpect(status().isOk());
}

每个测试都将使用相同的标头调用端点.

转载注明原文:spring – MockMvc为所有请求配置标头 - 代码日志