Я пытаюсь создать тест контроллера Spring Boot, используя TestRestTemplate. Требуется, чтобы в контекст теста включалось только то, что абсолютно необходимо для контроллера, поэтому ускорение всего контекста приложения для теста не вариант.
В настоящее время тест завершается неудачно из-за возврата конечной точки 404. Конечная точка работает правильно в производстве. Похоже, что контроллер не регистрируется в веб-сервлете.
Контроллер выглядит следующим образом:
@RestController
class MyController {
@GetMapping("/endpoint")
fun endpoint(): ResponseDto {
return ResponseDto(data = "Some data")
}
}
data class ResponseDto(val data: String)
Тест выглядит следующим образом:
@SpringBootTest(
classes = [MyController::class, ServletWebServerFactoryAutoConfiguration::class],
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
)
internal class MyControllerTestRestTemplateTest(
@Autowired private val restTemplate: TestRestTemplate
) {
@Test
fun `should work`() {
val result = restTemplate.getForEntity("/endpoint", String::class.java)
result.body.shouldMatchJson(
"""
{
"data": "Some data"
}
""")
}
}
Как я могу заставить эту тестовую настройку работать?