我有以下JSON格式
{
"file": {
"version": "v1.4",
"release": "1.1"
},
"status": "ON",
"document": {
"status": "NOT_FOUND",
"release": "undefined"
}
}
而且我想知道如何将格式添加到我的PactDslJsonBody中,例如?
DslPart result = new PactDslJsonBody()
.stringType("file.version", "v1.4")
.stringType("file.release", "1.1")
.stringType("status", "ON")
.stringType("document.status", "NOT_FOUND")
.stringType("document.release", "release")
.asBody();
还是可以添加Java Pojo?我有类ApplicationResponse:
public class ApplicationResponse {
private File file;
private String status;
private Document document;
//...
}
Something like ??
DslPart result = new PactDslJsonBody()
.object(ApplicationResponse)
.asBody();
最好的方法是什么?你能举个例子吗
最佳答案
我们尝试使用反射来解决我们的pojos,以做您想做的事情。但是,我们的类带有许多Lombok批注,并且我们无法从生成器批注的字段中获取默认值。我们放弃了尝试使用它。但是毫无疑问,有更多时间的开发人员可以实现这一目标。
我现在正在为我们的项目积极创建契约,并同时使用LambdaDsl
和PactDslJsonBody
建立交互。
DslPart actualPactDsl = LambdaDsl.newJsonBody((body) -> {
body
.stringType("status", "ON")
.object("document", (doc) -> {
doc.stringType("status", "NOT_FOUND");
doc.stringType("release", "undefined");
})
.object("file", (file) -> {
file.stringType("version", "v1.4");
file.stringType("release", "1.1");
});
}).build();
要么
String pactDslJson = new PactDslJsonBody()
.stringType("status", "ON")
.object("document")
.stringType("status", "NOT_FOUND")
.stringType("release", "undefined")
.closeObject()
.object("file")
.stringType("version", "v1.4")
.stringType("release", "1.1")
.closeObject()
.getBody().toString();
这两个示例都将从您的示例中生成Json字符串。
examples中的Pact-Jvm确实有助于您了解可以创建的不同类型的测试。
关于java - PACT测试:编写PactDslJsonBody的正确方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56479178/