首页 > 解决方案 > @RequestBody 在集成测试范围内仅包含​​带有 kotlin 数据类的空值

问题描述

@编辑

问题与验证无关。经过调查,我发现在与@SpringBootTest 的集成测试中使用任何Rest 客户端(即RestTemplate/WebTestClient)执行我的代码时,解析后的@RequestBody 总是具有空值。它在正常环境中工作正常。

@PostMapping("/url")
fun executeFun(
    @Valid @RequestBody MyDataClass: MyData
) = ...

data class MyDataClass(
@field:Size(min = 3, max = 5
) val myValidatedField: String = "")

)

我的数据类示例,我可以看到 Web 测试客户端产生了所需的请求:

 POST http://localhost:62211/url
 WebTestClient-Request-Id: [1]
 Content-Type: [application/json]
 Content-Length: [49]

{"myvalidatedField":"1234"}

我的集成类看起来像这样

@SpringBootTest(webEnvironment = RANDOM_PORT)
@AutoConfigureWebTestClient
internal class { 
....

@Test
    fun web_Client_2() {
       val myData = MyDataClass("1234")
        webClient.post().uri(URI_WITH_CONTEXT_PATH)
            .contentType(APPLICATION_JSON)
            .bodyValue(myData)
            .exchange()
    }```


标签: springspring-bootvalidationkotlin

解决方案


推荐阅读