【发布时间】:2018-11-20 22:58:40
【问题描述】:
我们正在创建一个使用 Swagger 的 @ApiModelProperty 注释记录的 REST API。我正在为 API 编写端到端测试,我需要为一些请求生成 JSON 正文。假设我需要将以下 JSON 发布到端点:
{ "name": "dan", "age": "33" }
到目前为止,我创建了一个包含所有必要属性的单独类,并且可以使用 Jackson 将其序列化为 JSON:
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyPostRequest {
private String name;
private String age;
// getters and fluid setters omitted...
public static MyPostRequest getExample() {
return new MyPostRequest().setName("dan").setAge("33");
}
}
但是,我们注意到代码库中已经有一个非常相似的类,它定义了 API 接受的模型。在这个模型类中,每个属性的示例值已经在@ApiModelProperty 中定义:
@ApiModel(value = "MyAPIModel")
public class MyAPIModel extends AbstractModel {
@ApiModelProperty(required = true, example = "dan")
private String name;
@ApiModelProperty(required = true, example = "33")
private String age;
}
有没有一种简单的方法来生成一个 MyAPIModel 实例,其中填充了每个属性的示例值?注意:在转换为 JSON 之前,我需要能够在端到端测试中修改单个属性,以便测试不同的边缘情况。因此直接生成示例 JSON 是不够的。
基本上,我可以在 MyAPIModel 上编写一个静态方法 getExample()(或者在基类 AbstractModel 上更好),它返回 Swagger 注释中指定的 MyAPIModel 的示例实例?
【问题讨论】: