[Получить тело restTemplate.getForEntity в виде списка объектов - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь протестировать свое приложение 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.

Что я делаю неправильно? Есть ли лучший способ проверить эту конечную точку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...