Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos en aula

@Test
@DisplayName("Debería devolver código http 200 cuando las informaciones son válidas")
@WithMockUser
void registrar_escenario2() throws Exception {
    var datosRegistro = new DatosRegistroMedico(
                "Medico",
                "medico@voll.med",
                "61999999999",
                "123456",
                Especialidad.CARDIOLOGIA,
                datosDireccion());
 
    when(repository.save(any())).thenReturn(new Medico(datosRegistro));
 
    var response = mvc
                .perform(post("/medicos")
                        .contentType(MediaType.APPLICATION_JSON)
                        .content(datosRegistroMedicoJson.write(datosregistro).getJson()))
                .andReturn().getResponse();
 
    var datosDetalle= new DatosDetalleMedico(
                null,
                datosRegistro.nombre(),
                datosRegistro.email(),
                datosRegistro.documento(),
                datosRegistro.telefono(),
                datosRegistro.especialidad(),
                new Direccion(datosRegistro.direccion())
    );
    var jsonEsperado = datosDetalleMedicoJson.write(datosDetalle).getJson();
 
    assertThat(response.getStatus()).isEqualTo(HttpStatus.CREATED.value());
    assertThat(response.getContentAsString()).isEqualTo(jsonEsperado);
}
1 respuesta

Hola Justin,

Parece que estás trabajando en un test para verificar que tu API devuelve un código HTTP 200 cuando las informaciones son válidas. Sin embargo, en tu test, estás comprobando si el código de estado es HttpStatus.CREATED (201) en lugar de HttpStatus.OK (200). Esto podría ser la causa de un posible error en tu prueba, ya que estás esperando un código 201 en lugar de 200.

Aquí tienes algunas sugerencias para ajustar tu prueba:

  1. Verifica el código de estado esperado: Si realmente esperas un 200, cambia HttpStatus.CREATED.value() por HttpStatus.OK.value() en la aserción del estado de respuesta.

  2. Revisa el método de controlador: Asegúrate de que el método de tu controlador está configurado para devolver un 200 cuando la operación es exitosa. Si está devolviendo un 201, entonces tu prueba está correcta y solo necesitas ajustar el DisplayName para reflejar el código correcto esperado.

  3. Datos de prueba: Asegúrate de que los datos que estás enviando en la solicitud (datosRegistro) son válidos y completos según lo que espera tu API.

  4. Configuración del mock: Verifica que el mock del repositorio está configurado correctamente para devolver un objeto Medico válido.

Aquí tienes un ejemplo de cómo podría quedar tu aserción si esperas un 200:

assertThat(response.getStatus()).isEqualTo(HttpStatus.OK.value());

Espero que estas sugerencias te sean útiles. ¡Espero haber ayudado y buenos estudios!