Я пытаюсь изучить Kotlin и проверить, как он работает с весенней загрузкой.Мое приложение использует базу данных Монго для хранения данных, и у меня есть ресурс Джерси для получения данных.Я тестирую его, используя spring-boot-test
и RestTestTemplate
.
. RestTestTemplate
имеет метод exchange
, который принимает ParameterizedTypeReference
.Этот класс имеет защищенный конструктор.Таким образом, единственный способ использовать его из Kotlin был следующим:
class ListOfPeople : ParameterizedTypeReference<List<Person>>()
Вот мой метод испытаний:
@Test
fun `get list of people`() {
// create testdata
datastore.save(Person(firstname = "test1", lastname = "lastname1"))
datastore.save(Person(firstname = "test2", lastname = "lastname2"))
datastore.save(Person(firstname = "test3", lastname = "lastname2"))
datastore.save(Person(firstname = "test4", lastname = "lastname2"))
val requestEntity = RequestEntity<Any>(HttpMethod.GET, URI.create("/person"))
// create typereference for response de-serialization
class ListOfPeople : ParameterizedTypeReference<List<Person>>() // can this be done inline in the exchange method?
val responseEntity : ResponseEntity<List<Person>> = restTemplate.exchange(requestEntity, ListOfPeople())
assertNotNull(responseEntity)
assertEquals(200, responseEntity.statusCodeValue)
assertTrue( responseEntity.body.size >= 4 )
responseEntity.body.forEach { person ->
println("Found person: [${person.firstname} ${person.lastname}] " +
", born [${person.birthdate}]")
}
}
Это правильный(или единственный) способ сделать это, или есть лучший способ?
Если это поможет, вот ссылка на весь тест: testclass на github