Интерфейс для контроллера
interface BrandController {
fun findDTOs(pageable: Pageable): ResponseEntity<Page<SomeDTO>>
}
Упрощенный мой тест
var response: ResponseEntity<*>
@Test
fun `test`() {
`given TestRestTemplate`()
`when findDTOs`()
`then check body`()
}
protected fun `given not authorization`() {
restTemplate = TestRestTemplate()
}
private fun `when findDTOs`() {
// RestResponsePage<T> extends PageImpl<T>
response = restTemplate.getForEntity<RestResponsePage<SomeDTO>>(createUrlWithParams(url, requestPage))
}
private fun `then check body`() {
val body: Page<SomeDTO> = response.body as Page<SomeDTO> // body: "Page 2 of 2 containing java.util.LinkedHashMap instances"
assertEquals(requestPage.size, body.size) // success
val content: List<SomeDTO> = body.content as List<SomeDTO> // content: size = 10 body: "Page 2 of 2 containing java.util.LinkedHashMap instances"
content.forEachIndexed { index, someDTO: SomeDTO-> //Error
assertEquals(expectedList[index].name, someDTO.name)
assertEquals(expectedList[index].id, someDTO.id)
}
}
Ошибка:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com....SomeDTO
Как получить содержимое страницыкак List<AnyDTO>
, а не как List<java.util.LinkedHashMap>
Я сделал это для проверки правильности содержимого с помощью TestRestTemplate, возвращающего строку JSON, но я хотел бы сделать это следующим образом