2016-01-06 5 views
13

Sto utilizzando TestRestTemplate per test di integrazione sul nostro prodotto.Aggiungi valore testata per test di test SpringRestTemplate

Ho un test che assomiglia a questo:

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

    // validation code here 
} 

Questa particolare richiesta si aspetta un valore di intestazione. Qualcuno può farmi sapere come posso aggiungere un'intestazione alla chiamata TestRestTemplate?

risposta

9

Se si desidera che tutte le vostre richieste utilizzando TestRestTemplate per includere alcune intestazioni, è possibile aggiungere il seguente alla propria configurazione:

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

Aggiornamento: As of Spring Boot 1.4.0, TestRestTemplate non si estende RestTemplate più, ma ancora fornisce la stessa API come RestTemplate.

TestRestTemplate estende RestTemplate fornisce la stessa API come il RestTemplate, in modo da poter utilizzare la stessa API per l'invio di richieste. Per esempio:

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

funziona !, Grazie – NCrash

+2

Questo l'ha risolto, grazie mille. Solo una parte da notare è che 'HttpHeaders' deve provenire dal pacchetto' org.springframework.http' –

0

Se si desidera utilizzare più intestazioni per tutto il vostro richieste, è possibile aggiungere il seguito

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

Una volta che le intestazioni siano impostati è possibile utilizzare TestRestTemplate [testRestTemplate] o RestTemplate [testRestTemplate.getRestTemplate()] per il vostro riposo chiamate