spring - Gradle Spring mvc 验证数据类递归 Kotlin
问题描述
我需要创建一个递归验证,以便能够使用 Kotlin 在递归模式下验证 PizzaCreate 对象和基本属性。测试应该返回 400 但返回 200 ok(基本名称大小必须大于 2):
data class Base(@field:Length(min = 2, max = 100) val name:String)
data class PizzaCreate(
val id: Long,
@field:Length(min = 2, max = 100) val name: String,
val description: String,
val price: Int,
@Valid val base: Base
)
@RestController
@RequestMapping("/pizza")
class PizzaController(val pizzaService: PizzaService) {
@PostMapping
fun post(@RequestBody @Valid pizza: PizzaCreate) = pizzaService.addPizza(pizza)
}
@Test
fun `should add pizza `() {
val pizza = easyRandom.nextObject(PizzaCreate::class.java).copy(id = 1, name="aaa", base = Base(""))
val pizzaOut = PizzaOut(id=1,name=pizza.name,description = pizza.description,price = pizza.price)
`when`(pizzaService.addPizza(pizza)).thenReturn(pizzaOut.toMono())
webTestClient.post()
.uri("/pizza")
.bodyValue(pizza)
.exchange()
.expectStatus().isBadRequest
.returnResult<PizzaOut>().responseBody
}
解决方案
Base 上的验证应该@field:Valid val base: Base
代替@Valid val base: Base
field:
指定注释应用于非构造字段
参考:
推荐阅读
- angular - 输入'MonoTypeOperatorFunction
' 不能分配给 'OperatorFunction 类型的参数 - performance - 使用 -gdwarf-2 编译时程序更快
- bash - 如何使用 Bash 在另一个文本文件的末尾添加一列?
- c++ - 添加了 SDL 库:使用 VS 构建时“GNUC 未定义为预处理器宏”
- apache-kafka - 将消息加入 Kafka Stream 后从流中清除消息
- excel - 找到最后添加的工作表 (vba)?
- exception - NestJS:异常处理的最佳实践(异常过滤器 vs Interceptors.catchError)
- ruby-on-rails - 我应该将 Spree 中的所有控制器和路由复制/粘贴到我自己的应用程序吗?
- java - 在 64 位 C++ 中使用 JNI 时从 JAR 加载类失败
- c# - 如何从 MIME 内容创建图像?