Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

Testando Error 400

Hola, escribí el código tal y como lo ha presentado el instructor sin embargo me aparece el siguiente error

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadEsté es el código que he utilizado

package med.voll.api.controller;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpStatus;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.web.servlet.MockMvc;

import static org.assertj.core.api.Assertions.assertThat;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;

@SpringBootTest
@AutoConfigureMockMvc
class ConsultaControllerTest {
    @Autowired
    private MockMvc mvc;

    @Test
    @DisplayName("Deberia retornar un estado 400 cuando los datos ingresados sean invalidos")
    @WithMockUser
    void agendarEscenario1() throws Exception {
        //given //when
        var response = mvc.perform(post("/consultas")).andReturn().getResponse();

        //then
        assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value());
    }
}
2 respuestas

Hola Angelo,

Por lo que veo en tu código, estás probando un escenario donde esperas un error 400 (BAD_REQUEST) cuando los datos ingresados son inválidos. Sin embargo, no estás proporcionando ningún dato en tu solicitud POST, lo que podría ser la razón del error que estás viendo.

Sigue un ejemplo para solucionar esto al proporcionar datos inválidos en tu solicitud POST:

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.http.MediaType.APPLICATION_JSON;

// ...

@Test
@DisplayName("Deberia retornar un estado 400 cuando los datos ingresados sean invalidos")
@WithMockUser
void agendarEscenario1() throws Exception {
    //given
    String contenidoInvalido = "{\"atributoInexistente\":\"valor\"}";

    //when
    var result = mvc.perform(post("/consultas")
                    .contentType(APPLICATION_JSON)
                    .content(contenidoInvalido));

    //then
    result.andExpect(status().isBadRequest());
}

En este ejemplo, estoy proporcionando un JSON inválido como contenido de la solicitud POST. Este JSON contiene un atributo que no existe en el objeto que tu API espera recibir, lo que debería provocar un error 400.

Recuerda que este es solo un ejemplo, y deberías ajustarlo según los requisitos de tu API.

Espero haber ayudado y buenos estudios! Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios
solución!

Hola, muchas gracias por responder, me ha ayudado a comprender de mejor manera el test, sin embargo parece que el error que tenia se debia a las variables del entorno, me doy cuento de eso debido a que recientemente coloque lo siguiente dentro del archivo de las propiedades y el test se ejecuto sin errores, igualmente gracias por responder

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad