es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo importar los métodos willReturn(), hasSize() y is() para una prueba de Spring?

Sigo un artículo de Baeldung para hacer una prueba para un Controller en mi aplicación Spring. Se llama “Testing in Spring Boot” del 7 de junio de 2021. El código que estoy siguiendo está únicamente en la sección 8.

Tengo problemas para importar los tres métodos mencionados en el título. No sé de dónde importarlos.

@WebMvcTest(controllers = UserController.class)
public class UserControllerUnitTest {

@Autowired
private MockMvc mvc;

@MockBean
private UserServiceImpl userService;

@Test
public void givenUser_whenGetUsers_thenReturnJsonArray() throws Exception {
    User user = new User("nombre", "apellido", "correo@ejemplo.com", "1234");

    List<user> allUsers = List.of(user);

    given(userService.getUsers().willReturn(allUsers));

    mvc.perform(get("/users")
            .contentType(MediaType.APPLICATION_JSON))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$", hasSize(1)))
            .andExpect(jsonPath("$[0].name", is(user.getFirstName())));
}
}

¿Cómo los agrego? Otra pequeña pregunta que no es necesario responder… ¿es esta una prueba unitaria suficiente para la clase @Controller?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para importar los métodos mencionados, debes agregar las siguientes importaciones en la parte superior de la clase:

    import org.junit.Test;
    import org.mockito.Mockito.*;
    import org.springframework.security.test.context.support.WithMockUser;
    import org.springframework.test.web.servlet.MockMvc;
    

    Con respecto a tu segunda pregunta, esta prueba unitaria parece estar probando el método getUsers() de la clase UserController, el cual devuelve una lista de usuarios. Verifica si la respuesta contiene un arreglo JSON con un solo objeto de usuario y si el nombre de ese usuario coincide con el que se creó en la prueba. Sin embargo, para evaluar si es una prueba unitaria lo suficientemente buena, se necesita más contexto sobre la funcionalidad de la clase UserController y lo que se supone que debe hacer.

Comments are closed.