es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Spring Boot v2 No se encontró ningún bean de tipo TestRestTemplate

Estoy obteniendo un error al intentar obtener el TestRestTemplate. ¿Hay alguna forma de obtener el TestRestTemplate o probar el ErrorController?

registro de errores: https://pastebin.com/XVPU9qrb

Clase de prueba principal: Enlace

package io.kuark.ppalli

import org.junit.jupiter.api.Test
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT
import org.springframework.test.context.ActiveProfiles

@ActiveProfiles("test")
@SpringBootTest(classes = [PpalliApi::class], webEnvironment = RANDOM_PORT)
class PpalliApiTest {

@Test
  fun contextLoads() {}
}

Clase de prueba unitaria: Enlace

import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
import org.springframework.boot.test.web.client.TestRestTemplate
import kotlin.test.assertEquals

@WebMvcTest
class FallbackErrorControllerTest {

@Autowired
  lateinit var http: TestRestTemplate

@Test
  fun handleError() {
    val result = http.getForObject("/error", String::class.java);

assertEquals("""{"code": "NOT_FOUND"}""", result)
}
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según el registro de errores proporcionado, parece que TestRestTemplate no se encuentra en la ruta de clases. Esto puede ser debido a una dependencia faltante o a un problema de configuración.

    Para probar el ErrorController sin utilizar TestRestTemplate, puedes crear una solicitud de simulacro e inyectarla en el método del controlador. Esto se puede hacer utilizando MockMvc proporcionado por Spring MVC Test.

    Aquí tienes un ejemplo de fragmento de código:

    @RunWith(SpringRunner::class)
    @WebMvcTest(FallbackErrorController::class)
    class FallbackErrorControllerTest {
    
        @Autowired
        lateinit var mockMvc: MockMvc
    
        @Test
        fun handleError() {
            mockMvc.perform(
                MockMvcRequestBuilders.get("/error")
                    .accept(MediaType.APPLICATION_JSON)
            )
            .andExpect(status().isOk)
            .andExpect(jsonPath("$.code").value("NOT_FOUND"))
        }
    }
    

    En este código, estamos inyectando la instancia MockMvc y llamando a perform para ejecutar una solicitud GET al punto final /error. Esperamos recibir una respuesta con un código de estado 200 y un cuerpo JSON con un campo code que contenga el valor NOT_FOUND.

    Esto te permitirá probar tu ErrorController sin necesidad de utilizar TestRestTemplate.

Comments are closed.