为弹簧测试仪模板集成测试添加标头值

我正在使用我们产品的集成测试。TestRestTemplate

我有一个测试看起来像这样:

@Test
public void testDeviceQuery() {
    ResponseEntity<Page> deviceInfoPage = template.getForEntity(base, Page.class);

    // validation code here
}

此特定请求需要标头值。有人可以让我知道我如何为通话添加标题吗?TestRestTemplate


答案 1

更新从Spring Boot 1.4.0开始,TestRestTemplate不再扩展,但仍然提供与相同的API。RestTemplateRestTemplate

TestRestTemplate 扩展 RestTemplate 提供与 相同的 API,因此您可以使用相同的 API 发送请求。例如:RestTemplate

HttpHeaders headers = new HttpHeaders();
headers.add("your_header", "its_value");
template.exchange(base, HttpMethod.GET, new HttpEntity<>(headers), Page.class);

答案 2

如果您希望所有请求都包含某些标头,则可以将以下内容添加到设置中:TestRestTemplate

testRestTemplate.getRestTemplate().setInterceptors(
        Collections.singletonList((request, body, execution) -> {
            request.getHeaders()
                    .add("header-name", "value");
            return execution.execute(request, body);
        }));

推荐