我正在努力学习Kotlin ,并测试它如何与弹簧靴一起工作.我的应用程序使用mongo数据库来存储数据,我有一个Jersey资源来检索数据.我正在用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}]")
}
}
这是正确的(或唯一的)方法吗,还是有更好的方法?
If it helps, here is a link for the whole test: testclass on github