Spring MockMvc 测试:Swagger allowableValues 未过滤不良参数

Spring MockMvc test : Swagger allowableValues not filtering bad argument

我有一个 Java API (Post) 需要 PersonDTO 作为请求输入。

PersonDTO中有一个字段gender,我用allowableValues = man, woman注释,当我从外部调用API时它运行良好。如果我输入其他值,它将显示 400 错误的请求代码。

但是当我做我的集成测试时,我使用 MockMvc 做一个 post PersonDTOgender 的一些其他值,它 returns 200 而不是 400 - 这意味着 allowableValues = man, woman 不工作。

我该如何解决这个问题?

swagger-annotation 用于 swagger-ui 仅用于提供包含可能值 (see example of swagger-ui) 的下拉列表,因此 MockMvc 会忽略它。要检查 DTO 中允许的值,请使用枚举作为字段性别而不是字符串,或者使用带有正则表达式的 Bean-Validation @Pattern 作为字段性别。