Spring Boot的TestRestTemplate使用



Spring Boot的TestRestTemplate使用

TestRestTemplate和RestTemplate很類似,不過它是專門用在測試環境中的,本文我們將會講述TestRestTemplate的一些常用方法。

如果我們在測試環境中使用@SpringBootTest,則可以直接使用TestRestTemplate。

添加maven依賴

要使用TestRestTemplate,我們需要首先添加如下的maven依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-test</artifactId>
</dependency>

TestRestTemplate VS RestTemplate

TestRestTemplate和RestTemplate的功能很類似,都可以用來和HTTP API進行交互。實際上TestRestTemplate就是RestTemplate的封裝。 我們看下TestRestTemplate的代碼:

public class TestRestTemplate {

	private final RestTemplateBuilder builder;

	private final HttpClientOption[] httpClientOptions;

	private final RestTemplate restTemplate;
    ...

    	public void setUriTemplateHandler(UriTemplateHandler handler) {
		this.restTemplate.setUriTemplateHandler(handler);
	}

...

以setUriTemplateHandler為例,我們看到實際上TestRestTemplate調用了restTemplate里面的具體方法。

我們看一下TestRestTemplate基本的使用:

    @Test
    public void testGet (){
        TestRestTemplate testRestTemplate = new TestRestTemplate();
        ResponseEntity<String> response = testRestTemplate.
                getForEntity(FOO_RESOURCE_URL + "/1", String.class);

        assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));
    }

使用Basic Auth Credentials

TestRestTemplate封裝了基本的Auth Credentials,我們可以這樣使用:

TestRestTemplate testRestTemplate
 = new TestRestTemplate("user", "passwd");
ResponseEntity<String> response = testRestTemplate.
  getForEntity(URL_SECURED_BY_AUTHENTICATION, String.class);
  
assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));

使用HttpClientOption

HttpClientOption提供了如下幾個選項:ENABLE_COOKIES, ENABLE_REDIRECTS, 和 SSL。

我們看下TestRestTemplate怎么使用:

TestRestTemplate testRestTemplate = new TestRestTemplate("user", 
  "passwd", TestRestTemplate.HttpClientOption.ENABLE_COOKIES);
ResponseEntity<String> response = testRestTemplate.
  getForEntity(URL_SECURED_BY_AUTHENTICATION, String.class);
  
assertThat(response.getStatusCode(), equalTo(HttpStatus.OK))

如果我們不需要認證,則可以這樣使用:

TestRestTemplate(TestRestTemplate.HttpClientOption.ENABLE_COOKIES)

我們也可以在創建TestRestTemplate之后添加認證:

TestRestTemplate testRestTemplate = new TestRestTemplate();
ResponseEntity<String> response = testRestTemplate.withBasicAuth(
  "user", "passwd").getForEntity(URL_SECURED_BY_AUTHENTICATION, 
  String.class);
  
assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));

使用RestTemplateBuilder

RestTemplateBuilder為我們提供了自定義RestTemplate的機會,我們可以使用它來對RestTemplate進行封裝:

RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();
restTemplateBuilder.configure(restTemplate);
TestRestTemplate testRestTemplate = new TestRestTemplate(restTemplateBuilder);
ResponseEntity<String> response = testRestTemplate.getForEntity(
  FOO_RESOURCE_URL + "/1", String.class);
  
assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));

本文的例子可以參考https://github.com/ddean2009/learn-springboot2/tree/master/springboot-testRestTemplate

更多教程請參考 flydean的博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM