validaciones que proyecto mvc espaƱol crear arquitectura spring-mvc testing spring-data spring-mvc-test

spring mvc - que - Prueba de controlador aislado no puede crear una instancia de Pageable



validaciones en spring mvc (2)

El problema con la posibilidad de paginación se puede resolver proporcionando un manejador de argumentos personalizado. Si esto está configurado, se ejecutará en una excepción ViewResolver (loop). Para evitar esto, debe configurar un ViewResolver (una clase JSON ViewResolver anónima, por ejemplo).

mockMvc = MockMvcBuilders.standaloneSetup(controller) .setCustomArgumentResolvers(new PageableHandlerMethodArgumentResolver()) .setViewResolvers(new ViewResolver() { @Override public View resolveViewName(String viewName, Locale locale) throws Exception { return new MappingJackson2JsonView(); } }) .build();

Tengo un controlador Spring MVC que utiliza el soporte de paginación de Spring-Data:

@Controller public class ModelController { private static final int DEFAULT_PAGE_SIZE = 50; @RequestMapping(value = "/models", method = RequestMethod.GET) public Page<Model> showModels(@PageableDefault(size = DEFAULT_PAGE_SIZE) Pageable pageable, @RequestParam( required = false) String modelKey) { //.. return models; } }

Y me gustaría probar RequestMapping con el buen Spring Test MVC Test Support. Para mantener estas pruebas rápidas y aisladas de todo lo demás, no quiero crear el ApplicationContext completo:

public class ModelControllerWebTest { private MockMvc mockMvc; @Before public void setup() { ModelController controller = new ModelController(); mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); } @Test public void reactsOnGetRequest() throws Exception { mockMvc.perform(get("/models")).andExpect(status().isOk()); } }

Este enfoque funciona bien con otros Controladores, que no esperan una página, pero con este obtengo uno de estos lindos seguimientos de pila de Primavera. Se queja de que no se puede crear una instancia de Pageable:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.data.domain.Pageable]: Specified class is an interface at .... lots more lines

Pregunta: ¿Cómo cambio mi prueba para que la conversión mágica No-Solicitud-Parámetro-Para-paginación ocurra correctamente?

Nota: en la aplicación real, todo funciona bien.


Simplemente agregue @EnableSpringDataWebSupport para la prueba. Eso es.