Java PACT测试:编写PactDslJsonBody的正确方法

Java PACT测试:编写PactDslJsonBody的正确方法,java,json,testing,junit,pact,Java,Json,Testing,Junit,Pact,我有以下JSON格式 { "file": { "version": "v1.4", "release": "1.1" }, "status": "ON", "document": { "status": "NOT_FOUND", "release": "undefined" } } 我想知道如何将格式添加到我的PactDslJsonBody中,比如 DslPart result = new

我有以下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();

最好的方法是什么?请您添加一个示例,我们尝试使用反射来删除POJO,您正试图这样做。然而,我们的类带有许多Lombok注释&我们无法从生成器注释的字段中获取默认值。我们放弃了使用它。但是一个有更多时间的开发人员无疑可以实现这一点

我现在正在积极为我们的项目创建契约,并使用
lambdasl
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();

这两个示例都将根据您的示例生成Json字符串

作为测试的一部分,它确实有助于您了解可以创建的不同类型的测试

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();