Я пытаюсь проверить обмен RestTemplate с объектом ответа в контроллере из Службы отдыха в другом приложении.Мой тест Junit возвращается с нулевым ResponseEntity.Я попробовал пару способов без удачи.Сначала попытался использовать mockito для имитации методов ответа (когда ... потом).Второе пробовал с биржей совпадений.Я также попытался смешать два без удачи.Любая помощь будет отличной.Вот мой ответ контроллера, который я создаю:
ResponseEntity<RestResult<List<SiteMessage>>> response = rest.exchange(getAllMessagesUrl, HttpMethod.GET,
HttpEntity.EMPTY, new ParameterizedTypeReference<RestResult<List<SiteMessage>>>() {
});
Вот мой тест Junit:
@RunWith(MockitoJUnitRunner.class)
@SpringBootTest
public class MessageControllerTests {
@InjectMocks
MessageController messageController;
@Mock
RestTemplate restTemplate;
@Mock
SiteMessageService serviceMock;
@Mock
ResponseEntity<RestResult<List<SiteMessage>>> response;
private MockMvc mockMvc;
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.standaloneSetup(messageController).build();
}
@Test
public void testListPage() throws Exception {
RestResult<List<SiteMessage>> result = new RestResult<>();
result.setMessage("success");
SiteMessage message1 = new SiteMessage();
SiteMessage message2 = new SiteMessage();
message1.setId("ldsf030j2ldjs");
message2.setId("ldsf0432234s");
List<SiteMessage> messageList = new ArrayList<>();
messageList.add(message1);
messageList.add(message2);
result.setResults(messageList);
when(response.getBody()).thenReturn(result);
when(response.getStatusCode()).thenReturn(HttpStatus.NOT_FOUND);
when(restTemplate.exchange(
Matchers.any(URI.class),
Matchers.eq(HttpMethod.GET),
Matchers.any(),
Matchers.<ParameterizedTypeReference<RestResult<List<SiteMessage>>>>any())
).thenReturn(response);
mockMvc.perform(get("/message/list")).andExpect(status().isOk()).andExpect(view().name("message/list"));
}
}
Я пытаюсь вернуть ответ с телом, содержащим объект RestResult, который имеетсписок сообщений и сообщение