如何在Kotlin数据类中使用默认值以及Micronaut自省验证?

如何在Kotlin数据类中使用默认值以及Micronaut自省验证?,kotlin,micronaut,Kotlin,Micronaut,我开始学习Kotlin和Micronaut,并试图用RESTAPI构建一个基本的CRUD应用程序,但在让Bean验证与数据类一起工作时遇到了麻烦。现在我有: Task.kt import io.micronaut.core.annotation.Introspected 导入javax.validation.constraints.NotBlank @反思 数据类任务( val id:Int, @字段:非空值名称:字符串, val description:String=“”, val状态:Tas

我开始学习Kotlin和Micronaut,并试图用RESTAPI构建一个基本的CRUD应用程序,但在让Bean验证与数据类一起工作时遇到了麻烦。现在我有:

Task.kt

import io.micronaut.core.annotation.Introspected
导入javax.validation.constraints.NotBlank
@反思
数据类任务(
val id:Int,
@字段:非空值名称:字符串,
val description:String=“”,
val状态:TaskStatus=TaskStatus.NOT_启动
)
TaskController.kt

@Controller(“/task”)
开放类TaskController(专用val taskRepository:taskRepository){
@职位(“/”)
打开fun createTask(@Valid@Body task:task):task{
返回taskRepository.insert(任务)
}
}
Test.kt

@MicronautTest
类任务列表测试{
@注入
@字段:客户端(“/task”)
lateinit变量客户端:RxHttpClient
//如期通过
@试验
趣味`基本插入'(){
val request=HttpRequest.POST(“/”,对象{
val name=“foo”
val description=“foo description”
val状态=任务状态。正在进行
})
val响应:Task=client.toBlocking().retrieve(请求,Task::class.java)
Assertions.assertEquals(响应,任务(id=1,name=“foo”,description=“foo description”,status=TaskStatus.IN_PROGRESS))
}
@试验
fun`如果名称为空则返回400`(){
val request=HttpRequest.POST(“/”,对象{
val name=“”
val description=“foo description”
val状态=任务状态。正在进行
})
assertThrows(HttpClientResponseException::class.java){
client.toBlocking().retrieve(请求,任务::class.java)
}
}
//失败但应该通过
@试验
fun`如果未提供可选字段,则添加默认值。`(){
val request=HttpRequest.POST(“/”,对象{
val name=“foo”
})
val响应:Task=client.toBlocking().retrieve(请求,Task::class.java)
Assertions.assertEquals(响应,任务(id=1,name=“foo”,status=TaskStatus.NOT_start))
}
}
如果未提供
说明
状态
字段,我不确定它为什么返回400。它应该只使用数据类中定义的默认值,对吗?由于没有在这些字段上指定其他验证,所以它应该可以正常工作

你知道我遗漏了什么吗