将数据class转换为map以测试http GET响应体

Convert data class to map to test http GET response body

我正在尝试测试 GET 以创建所有 StatusMapping 对象,但是,我不确定测试它的最佳方法是什么。

响应返回的是地图,而我期待的是 StatusMapping 对象列表。 我应该将请求转换为地图吗?


这是 Service 代码:

fun getAll(): ResponseEntity<List<StatusMapping>> {
    return ResponseEntity<List<StatusMapping>>(statusMappingRepository.findAll(), HttpStatus.OK)
}

这是测试

@Test
fun `Get all mappings created`() {
    val requests = listOf(
        StatusMapping("available", "available"),
        StatusMapping("unavailable", "unavailable")
    )
    requests.forEach { statusMappingService.createMapping(it.toStatusMappingRequest()) }

    val response = restTemplate.getForEntity(getRootUrl(), List::class.java)

    assertEquals(response.body, requests)
}

这是我得到的错误

Expected :[{source=available, target=available}, {source=unavailable, target=unavailable}]
Actual   :[StatusMapping(source=available, target=available), StatusMapping(source=unavailable, target=unavailable)]

请从替换开始

val response = restTemplate.getForEntity(getRootUrl(), List::class.java)

val response = restTemplate.exchange(
        getRootUrl(),
        HttpMethod.GET,
        null,
        object : ParameterizedTypeReference<List<StatusMapping>>() {})

假设 restTemplateTestRestTemplate

的实例