java - Cómo burlarse de la plantilla de descanso y la entidad de respuesta

CorePress2024-01-25  362

Soy nuevo en los conceptos de JUnit y Mockito y estoy tratando de descubrir cómo se hace en una llamada de plantilla de descanso. Considere la siguiente implementación aproximada:

Class TheWrapper{

  @Autowired
  RestTemplate template;

}

Class Abc extends TheWrapper{

  boolean validation(){

      // .....
     //carries out different validation operations
     //  .....

     try{
       
        ResponseEntity<Object> response= template.postForEntity("localhost:8080...",obj,Object.class);

        if(response.getStatusCodeValue()==200) // Problem: throwing MyCustomException here, 
                                               // when test is runned
          return true;
        else
          return false;
     
     }catch(Exception e){
        throws new MyCustomException(...);
     }

}

Ahora necesito escribir pruebas unitarias de tal manera que tenga que burlarme de la llamada de la plantilla rest y compruebe si el código de estado es 200 o no.

Class Testing{

  @InjectMock
  Abc obj;

  @Mock
  RestTemplate template;

  @BeforeEach
  void setup(){
    obj=new Abc();
    MockitoAnnotations.initMocks(this);
   }

  @Test
  void testingIt(){
    
   ResponseEntity<Object> response=new ResponseEntity<Object>(HttpStatus.OK);
  
   when(template.postForEntity("local...",any(),any())).then(response)

   Assertion.assertEquals(obj.validation(),true);

  }
}

Si esta no es la forma de implementarlo, corríjame.



------------------------------------

La plantilla de descanso sobrecargó el método postForEntity varias veces. Asegúrate de definir el correcto. Además, puedes usar anyString() en lugar de 'local...'.

template.postForEntity(anyString(),any(),any())



------------------------------------

Puede utilizar un servicio independiente para mantener todas las respuestas simuladas. Wiremock es una de esas aplicaciones útiles que puedes utilizar. Puede tener todas las combinaciones posibles de solicitud/respuesta HTTP y también código de estado. Usando wiremock también puedes crear archivos separados de mapeo de solicitud-respuesta, lo que puede ser útil para evitar la codificación. http://wiremock.org/docs/getting-started/

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare