Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

305
Vistas
Cómo simular un servicio dentro de Controller Advice for Unit Testing

El problema es que no puedo hacer una prueba unitaria/simular esto porque el mensaje ByLocaleService es nulo en el Consejo del controlador . Sugiera cualquier forma de inyectar el simulacro de messageByLocaleSer. Tengo una configuración como esta:

Clase ExceptionControllerAdvice:

 @Autowired private MessageByLocaleService messageByLocaleService; //CANNOT MOCK THIS @ControllerAdvice public class ExceptionControllerAdvice { @ExceptionHandler(UserNotFoundException.class) public ResponseEntity<String> handleUnexpectedException(HttpServletRequest request, Exception e) { //build response as below String s = messageByLocaleService.buildMessage(HttpStatus.ERROR,"User Not Valid"); // GETTING NULL HERE //and send the response back to the client here } }

Método del controlador:

 @RequestMapping(value = "${foo.controller.requestMappingUrl.login}", method = RequestMethod.POST) public ResponseMessage<String> loginUser( @RequestParam("username") String username, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { return fooService.login(username); }

Configuración de JUnit y métodos de prueba:

 @InjectMocks private ProjectController projectController; @Mock private FooService fooService; @Mock private MessageByLocaleService messageByLocaleService; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); mockMvc = MockMvcBuilders.standaloneSetup(projectController) .setMessageConverters(new MappingJackson2HttpMessageConverter()) .setControllerAdvice(new ExceptionControllerAdvice()).build(); } @SuppressWarnings("unchecked") @Test public void testControllerUserNotFoundException() throws Exception { Response resp = new Response(); resp.setStatusCode(StatusCode.UserNotFoundErrorCode); when(fooService.login(any(String.class)). thenThrow(UserNotFoundException.class); mockMvc.perform(post("/service-user/1.0/auth/login?&username=test") .contentType(contentType)). andExpect(status().isNotAcceptable()) .andExpect(jsonPath("$.statusCode", is("ERRORCODE144"))); }
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Es un poco difícil saberlo a partir del código que ha mostrado, pero presumiblemente está probando ExceptionControllerAdvice y crea una instancia en algún lugar de su Prueba unitaria. Si lo hace, intente lo siguiente @InjectMocks private ExceptionControllerAdvice unitUnderTest; @Mock private MessageByLocaleService messageByLocaleService;

Creo que Mockito creará un simulacro de MessageByLocaleService y lo inyectará automáticamente en su ExceptionControllerAdvice.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda