Saltar al contenido

Cómo configurar Spring TestRestTemplate

Nuestros mejores desarrolladores agotaron sus provisiones de café, por su búsqueda todo el tiempo por la solución, hasta que Rodrigo encontró la contestación en Bitbucket así que hoy la comparte aquí.

Solución:

Sé que esta es una vieja pregunta, y probablemente ya haya encontrado otra solución para esto. Pero estoy respondiendo de todos modos para que otros se tropiecen con él como lo hice yo. Tuve un problema similar y terminé usando @PostConstruct en mi clase de prueba para construir un TestRestTemplate configurado a mi gusto en lugar de usar @TestConfiguration.

    @RunWith(SpringJUnit4ClassRunner.class)
    @EnableAutoConfiguration
    @SpringBootTest(classes = BackendApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class MyCookieClientTest 
        @LocalServerPort
        int localPort;

        @Autowired
        RestTemplateBuilder restTemplateBuilder;

        private TestRestTemplate template;

        @PostConstruct
        public void initialize() 
            RestTemplate customTemplate = restTemplateBuilder
                .rootUri("http://localhost:"+localPort)
                ....
                .build();
            this.template = new TestRestTemplate(customTemplate,
                 null, null, //I don't use basic auth, if you do you can set user, pass here
                 HttpClientOption.ENABLE_COOKIES); // I needed cookie support in this particular test, you may not have this need
        
    

Para configurar su TestRestTemplate, la documentación oficial sugiere que use TestRestTemplate, como se muestra en el siguiente ejemplo (por ejemplo, para agregar una autenticación básica):

public class YourEndpointClassTest {
    private static final Logger logger = LoggerFactory.getLogger(YourEndpointClassTest.class);  

    private static final String BASE_URL = "/your/base/url";

    @TestConfiguration
    static class TestRestTemplateAuthenticationConfiguration 

        @Value("$spring.security.user.name")
        private String userName;

        @Value("$spring.security.user.password")
        private String password;

        @Bean
        public RestTemplateBuilder restTemplateBuilder() 
            return new RestTemplateBuilder().basicAuthentication(userName, password);
        
    


    @Autowired
    private TestRestTemplate restTemplate;

//here add your tests...

Aquí puedes ver las reseñas y valoraciones de los usuarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *