TestRestTemplate和RestTemplate很類似,不過它是專門用在測試環境中的,本文我們將會講述TestRestTemplate的一些常用方法。
如果我們在測試環境中使用@SpringBootTest,則可以直接使用TestRestTemplate。
添加maven依賴
要使用TestRestTemplate,我們需要首先添加如下的maven依賴:
<code><
dependency
><
groupId
>org.springframework.bootgroupId
><
artifactId
>spring-boot-testartifactId
>dependency
> /<code>
TestRestTemplate VS RestTemplate
TestRestTemplate和RestTemplate的功能很類似,都可以用來和HTTP API進行交互。實際上TestRestTemplate就是RestTemplate的封裝。 我們看下TestRestTemplate的代碼:
<code>public
class
TestRestTemplate
{private
final
RestTemplateBuilder builder;private
final
HttpClientOption[] httpClientOptions;private
final
RestTemplate restTemplate; ...public
void
setUriTemplateHandler
(UriTemplateHandler handler)
{this
.restTemplate.setUriTemplateHandler(handler); } ... /<code>
以setUriTemplateHandler為例,我們看到實際上TestRestTemplate調用了restTemplate裡面的具體方法。
我們看一下TestRestTemplate基本的使用:
<code>public
void
testGet
()
{ TestRestTemplate testRestTemplate =new
TestRestTemplate(); ResponseEntity response = testRestTemplate. getForEntity(FOO_RESOURCE_URL +"/1"
, String.
class
); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK)); } /<code>
使用Basic Auth Credentials
TestRestTemplate封裝了基本的Auth Credentials,我們可以這樣使用:
<code>TestRestTemplate testRestTemplate =new
TestRestTemplate("user"
,"passwd"
); ResponseEntity response = testRestTemplate. getForEntity(URL_SECURED_BY_AUTHENTICATION, String.
class
); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK)); /<code>
使用HttpClientOption
HttpClientOption提供瞭如下幾個選項:ENABLE_COOKIES, ENABLE_REDIRECTS, 和 SSL。
我們看下TestRestTemplate怎麼使用:
<code>TestRestTemplate testRestTemplate =new
TestRestTemplate("user"
,"passwd"
, TestRestTemplate.HttpClientOption.ENABLE_COOKIES); ResponseEntity response = testRestTemplate. getForEntity(URL_SECURED_BY_AUTHENTICATION, String.
class
); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK)); /<code>
如果我們不需要認證,則可以這樣使用:
<code>TestRestTemplate
(TestRestTemplate
.HttpClientOption
.ENABLE_COOKIES
) /<code>
我們也可以在創建TestRestTemplate之後添加認證:
<code>TestRestTemplate testRestTemplate =new
TestRestTemplate(); ResponseEntity response = testRestTemplate.withBasicAuth("user"
,"passwd"
).getForEntity(URL_SECURED_BY_AUTHENTICATION, String.
class
); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK)); /<code>
使用RestTemplateBuilder
RestTemplateBuilder為我們提供了自定義RestTemplate的機會,我們可以使用它來對RestTemplate進行封裝:
<code>RestTemplateBuilder restTemplateBuilder =new
RestTemplateBuilder(); restTemplateBuilder.configure(restTemplate); TestRestTemplate testRestTemplate =new
TestRestTemplate(restTemplateBuilder); ResponseEntity response = testRestTemplate.getForEntity( FOO_RESOURCE_URL +"/1"
, String.
class
); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK)); /<code>
歡迎關注我的公眾號:程序那些事,更多精彩等著您!
更多內容請訪問:flydean的博客 flydean.com
![Spring Boot的TestRestTemplate使用](http://p2.ttnews.xyz/loading.gif)