RestTemplateのunitTestを作成して実行した時に以下のエラーが発生した場合の対応
java.lang.IllegalStateException: Unable to use auto-configured MockRestServiceServer since MockServerRestTemplateCustomizer has not been bound to a RestTemplate
対応
RestTemplateの使い方が良くなかった様で、RestTemplateを使用するクラスにRestTemplateBuilderを引数とするコンストラクターを用意してRestTemplateのインスタンスを作成するようにして解決することができた。
AsIs
@Repository
class TaskRepository {
fun getTask(taskId: Int): Task? {
val restTemplate = RestTemplate()
val uri = "http://localhost:50000/tasks/$taskId"
return restTemplate.getForObject(uri, Task::class)
}
}
ToBe
@Repository
class TaskRepository(restTemplateBuilder: RestTemplateBuilder) {
private var restTemplate: RestTemplate? = null
init {
restTemplate = restTemplateBuilder.build()
}
fun getTask(taskId: Int): Task? {
val uri = "http://localhost:50000/tasks/$taskId"
return restTemplate?.getForObject(uri, Task::class)
}
}
参考
そもそもRestTemplate使用する時に公式Documentの以下の部分を見て実装した方が良かった。
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-resttemplate
コメントを残す