¿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?
davy.ai
Para importar los métodos mencionados, debes agregar las siguientes importaciones en la parte superior de la clase:
Con respecto a tu segunda pregunta, esta prueba unitaria parece estar probando el método
getUsers()
de la claseUserController
, 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 claseUserController
y lo que se supone que debe hacer.