Я пытаюсь протестировать свое приложение SpringBoot, написанное на Kotlin, и я хотел бы утверждать, равен ли данный список объектов ответу одной из моих конечных точек. Для этого я использую TestRestTemplate.
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class IntegrationTests(@Autowired val restTemplate: TestRestTemplate) {
@Test
fun `Assert user creating ang get`(){
val rafael = User(name="rafael", group = hashSetOf())
val entityCreate = restTemplate.postForEntity<User>("/api/user", rafael)
assertThat(entityCreate.statusCode).isEqualTo(HttpStatus.OK)
val entityGet = restTemplate.getForEntity<User>("/api/user/${entityCreate?.body?.id}")
assertThat(entityGet.statusCode).isEqualTo(HttpStatus.OK)
assertThat(entityCreate.body).isEqualTo(entityGet.body)
}
@Test
fun `Assert the creation of multiple users and getting a list of them`(){
val rafael = User(name="rafael", group = hashSetOf())
val carolina = User(name="carolina", group = hashSetOf())
val nathan = User(name="nathan", group = hashSetOf())
val userList = listOf<User>(rafael, carolina, nathan)
val entityCreateList = userList.map {restTemplate.postForEntity<User>("/api/user", it)}
entityCreateList.forEach { assertThat(it.statusCode).isEqualTo(HttpStatus.OK) }
val getEntity = restTemplate.getForEntity<List<User>>("/api/user")
getEntity.body.map { User(it) }
assertThat(getEntity.statusCode).isEqualTo(HttpStatus.OK)
assertThat(getEntity.body).isEqualTo(entityCreateList.map { it.body })
}
}
Проблема в том, что переменная entityCreateList.body
имеет тип List<User>
, а getEntity.body
- List<String
. Таким образом, когда я пытаюсь утверждать их равенство, я получаю
Expecting:
<[{"group"=[], "id"="5e651695b521a6406e426dfd", "name"="rafael"},
{"group"=[], "id"="5e651695b521a6406e426dfe", "name"="rafael"},
{"group"=[], "id"="5e651695b521a6406e426dff", "name"="carolina"},
{"group"=[], "id"="5e651695b521a6406e426e00", "name"="nathan"}]>
to be equal to:
<[User(id=5e651695b521a6406e426dfe, name=rafael, group=[]),
User(id=5e651695b521a6406e426dff, name=carolina, group=[]),
User(id=5e651695b521a6406e426e00, name=nathan, group=[])]>
but was not.
Что я делаю неправильно? Есть ли лучший способ проверить эту конечную точку?