【发布时间】:2021-05-25 01:39:42
【问题描述】:
在我的项目中,我有一些用于 REST 通信的 DTO 类。使用空手道,我想创建一些外部 e2e/集成测试,以检查 API 响应是否符合 DTO 中定义的合同。为了保持整个设置干燥,我想避免手动编写描述 DTO 的空手道 JSON 模式。相反,我正在寻找一种将我的 Java 类转换为空手道 JSON 模式的方法。
我已经拥有的:
假设这是我的 Java DTO 之一。
@Getter
@Setter
@AllArgsConstructor
@SuperBuilder
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({"elements", "property_1", "property_2"})
public class MyComplexTypeListDTO extends MyBaseAPIResponseDTO {
private List<MyComplexType> elements;
}
我有一个使用jsonschema-generator 的转换器,它为我提供了我班级的JSON-Schema 表示。
private static JsonNode getSchemaFor(Class clazz) {
JacksonModule module = new JacksonModule();
ObjectMapper objectMapper = new ObjectMapper();
SchemaGeneratorConfigBuilder configBuilder = new SchemaGeneratorConfigBuilder(objectMapper, SchemaVersion.DRAFT_2019_09, OptionPreset.PLAIN_JSON)
.with(module);
SchemaGeneratorConfig config = configBuilder.build();
SchemaGenerator generator = new SchemaGenerator(config);
return generator.generateSchema(clazz);
}
但是空手道的模式定义不同,结果不匹配。所以我要么需要一个从 Java 类直接到空手道模式的翻译器,要么需要一个翻译器/其他类型的 JSON 模式和空手道的 JSON 模式之间的粘合剂。
有没有办法检查 API 响应是否与我缺少的空手道 Java 类匹配?对于我遗漏的任何步骤,是否有一个方便的转换库或者我必须自己编写?
【问题讨论】:
标签: karate