как исправить мой нулевой ответ ResponseEntity в тесте junit Mock - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь проверить обмен 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, который имеетсписок сообщений и сообщение

...