Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Sugerencia] Sobre error 400

En mi caso, luego de luchar contra Lombok porque no funcionaba, este es mi codigo de test:

package com.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.context.ActiveProfiles;
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
@ActiveProfiles("test") // <--- Esto hace que busque application-test.properties
class ConsultaControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    @DisplayName("Deberia devolver http 400 cuando request esta vacia")
    @WithMockUser
    void reservar_escenario1() throws Exception {

        var response = mockMvc.perform(post("/consultas"))
                .andReturn().getResponse();
        assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value());
    }
}
2 respuestas

¡Hola Christian, espero que estés!

Parece que has estado trabajando duro para configurar tus pruebas con Spring Boot y MockMvc. Tu código de prueba está bien estructurado para verificar que una solicitud POST vacía a /consultas devuelva un error HTTP 400. Aquí hay algunas sugerencias y cosas a tener en cuenta:

  1. Configuración de Lombok: Si tuviste problemas con Lombok, asegúrate de que tu IDE esté configurado correctamente para reconocer las anotaciones de Lombok. A menudo, esto implica instalar un plugin específico para Lombok en tu IDE.

  2. Dependencias de Maven: Asegúrate de que todas las dependencias necesarias estén correctamente declaradas en tu pom.xml. Ya has mencionado la adición de spring-security-test, lo cual es excelente para simular un usuario autenticado en tus pruebas.

  3. Simulación de Usuario: Has utilizado @WithMockUser, lo cual es perfecto para evitar problemas de autenticación durante las pruebas. Esto simula un usuario autenticado y te permite centrarte en probar la lógica de tu controlador.

  4. Verificar Configuración de Seguridad: Si en algún momento encuentras un error 403, es una buena práctica revisar las configuraciones de seguridad en tu aplicación para asegurarte de que las rutas y métodos HTTP estén correctamente configurados para permitir el acceso.

  5. Pruebas Adicionales: Una vez que tengas esta prueba funcionando, podrías considerar agregar más casos de prueba para diferentes escenarios, como enviar un JSON válido y verificar que obtienes un HTTP 200, o cualquier otra lógica de negocio que tu controlador deba manejar.

Espero que estas sugerencias te sean útiles. ¡Sigue adelante con tus pruebas y el desarrollo de tu API!

Espero haber ayudado y ¡buenos estudios!

Gracias !!!