1
resposta

[Dúvida] Método de teste para as funções listar

Estou fazendo o teste para a listagem de consulta, porém o meu response não está devolvendo o json com os dados da consulta. Ele retorna somente as informações do Pageable. Tem alguma função que traga os dados da listagem corretamente?

@Test
    @DisplayName("Deveria devolver http 200 e lista de consultas quando executado corretamente")
    @WithMockUser
    void listarCenario1() throws Exception {

        var proximaSegundaAs10 = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY)).atTime(10,0);
        var medico = mock.cadastrarMedico("Medico", "medico@voll.med", "654321", Especialidade.CARDIOLOGIA);
        var paciente = mock.cadastrarPaciente("Paciente", "paciente@email.com", "00000000000");
        var dadosListagem = new DadosListagemConsulta(null, "Medico", "Paciente", proximaSegundaAs10);


        when(agendaDeConsultas.listar(any())).thenReturn(dadosListagem).

        mock.cadastrarConsulta(medico, paciente, proximaSegundaAs10);

        var response = mvc.perform(get("/consultas")).andReturn().getResponse();
        assertThat(response.getStatus()).isEqualTo(HttpStatus.OK.value());

        var jsonEsperado = dadosListagemConsultaJson.write(dadosListagem).getJson();
        assertThat(response.getContentAsString()).isEqualTo(jsonEsperado);
    }
1 resposta

E aí, beleza!

Uma possível razão pra isso pode ser que a função listar do seu serviço agendaDeConsultas não tá retornando os dados completos que você espera. Dá uma conferida lá pra ver se a lógica de retorno tá certa.

Outra coisa, quando você tá fazendo o mock do método listar usando o when, parece que você tá usando o método thenReturn com dadosListagem. Certifica que esse objeto dadosListagem tem todos os dados que você espera na resposta, inclusive os detalhes da consulta.

Se o listar tá certo e o objeto dadosListagem também, o teste deveria passar. Se continuar com o mesmo problema, talvez valha a pena dar uma olhada no controlador (MedicoController) ou no serviço (agendaDeConsultas) pra garantir que eles tão se comunicando direitinho.

Espero que ajude! Se precisar de mais alguma coisa, tamo aí!