2016-01-06 10 views
13

Używam do testowania integracji naszego produktu.Dodaj wartość nagłówka do Spring TestRestTemplate Integration Test

mam jednego testu, który wygląda tak:

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

    // validation code here 
} 

Ta szczególna prośba oczekuje wartości cel. Czy ktoś może mi powiedzieć, w jaki sposób mogę dodać nagłówek do wywołania TestRestTemplate?

Odpowiedz

9

Jeśli chcesz wszystkich swoich żądań korzystających TestRestTemplate w celu włączenia niektórych nagłówków, można dodać następujące konfiguracji:

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

Aktualizacja: As of Spring Boot 1.4.0, TestRestTemplate nie rozciąga RestTemplate już, ale nadal zapewnia takie same API jak RestTemplate.

TestRestTemplate rozciąga RestTemplate zapewnia taką samą jak RestTemplate API, dzięki czemu można używać tego samego API do wysyłania żądań. Na przykład:

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

to działa !, Dzięki – NCrash

+2

Rozwiązało to, dzięki kilka. Jedną z części wartą uwagi jest to, że 'HttpHeaders' musi pochodzić z pakietu' org.springframework.http' –

0

Jeśli chcesz korzystać z wielu nagłówków za wszystkie swoje wnioski można dodać poniższy

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)); 
} 

po nagłówki są ustawione można użyć TestRestTemplate [testRestTemplate] lub RestTemplate [testRestTemplate.getRestTemplate()] dla REST wzywa

Powiązane problemy