簡體   English   中英

為Spring TestRestTemplate集成測試添加標頭值

[英]Add Header Value For Spring TestRestTemplate Integration Test

我正在使用TestRestTemplate對我們的產品進行集成測試。

我有一個看起來像這樣的測試:

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

    // validation code here
}

此特定請求需要Header值。 有人可以告訴我如何在TestRestTemplate調用中添加標題嗎?

更新從Spring Boot 1.4.0開始TestRestTemplate不再擴展RestTemplate ,但仍然提供與RestTemplate相同的API。

TestRestTemplate 擴展RestTemplate 提供與RestTemplate相同的API,因此您可以使用相同的API來發送請求。 例如:

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

如果您希望使用TestRestTemplate所有請求都包含某些標頭,則可以將以下內容添加到您的設置中:

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

如果您想為所有請求使用多個標頭,可以添加以下內容

 import org.apache.http.Header;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.message.BasicHeader;
 import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;


 private void setTestRestTemplateHeaders() {
    Header header = new BasicHeader("header", "value");
    Header header2 = new BasicHeader("header2", "value2");
    List<Header> headers = new ArrayList<Header>();
    headers.add(header);
    headers.add(header2);
    CloseableHttpClient httpClient = HttpClients.custom().setDefaultHeaders(headers).build();
    testRestTemplate.getRestTemplate().setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
 }

設置標頭后,您可以使用TestRestTemplate [testRestTemplate]RestTemplate [testRestTemplate.getRestTemplate()]進行REST調用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM