Я пытаюсь издеваться над методом RestTemplate.exchange
. Основной класс выглядит следующим образом:
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.RequestEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
public class JsonPlaceHolder {
private RestTemplate restTemplate;
public JsonPlaceHolder(RestTemplate restTemplate) {
super();
this.restTemplate = restTemplate;
}
public Post fetchPostEntity() {
HttpHeaders headers = new HttpHeaders();
Post reqPost = new Post();
HttpEntity<Post> requestEntity = new HttpEntity<Post>(reqPost, headers);
ResponseEntity<Post> respEntity = restTemplate.exchange("https://jsonplaceholder.typicode.com/posts/1",
HttpMethod.GET, requestEntity, Post.class);
System.out.println(respEntity);
return reqPost;
}
}
Класс post:
public class Post {
private String userId;
private String id;
private String title;
private String body;
// Getters and Setters
@Override
public String toString() {
return "Post [userId=" + userId + ", id=" + id + ", title=" + title + ", body=" + body + "]";
}
}
Чтобы протестировать вышеуказанный класс, у меня есть следующий код:
@RunWith(MockitoJUnitRunner.class)
public class JsonPlaceHolderTest {
@Mock
private RestTemplate mockedRestTemplate;
private String post1Uri = "https://jsonplaceholder.typicode.com/posts/1";
@Test
public void restTemplateExchange() {
JsonPlaceHolder jsonPlaceHolder = new JsonPlaceHolder(mockedRestTemplate);
Post fakePost = new Post();
fakePost.setBody("BODY");
fakePost.setId("44");
fakePost.setUserId("USERID");
fakePost.setTitle("TITLE");
HttpHeaders headers = new HttpHeaders();
Post reqPost = new Post();
HttpEntity<Post> requestEntity = new HttpEntity<Post>(reqPost, headers);
ResponseEntity<Post> fakeRespEntity = new ResponseEntity<Post>(fakePost, HttpStatus.OK);
when(mockedRestTemplate.exchange(post1Uri, HttpMethod.GET, requestEntity, Post.class)).thenReturn(fakeRespEntity);
Post respPost = jsonPlaceHolder.fetchPostEntity();
System.out.println(respPost);
}
}
вывод:
null
Post [userId=null, id=null, title=null, body=null]
Почему when().thenReturn()
не работает с RestTemplate.exchange()
. Я пробовал то же самое с RestTemplate.getForEntity()
, и это работает.