【问题标题】:Pact JVM closeArray契约 JVM closeArray
【发布时间】:2017-12-22 08:02:18
【问题描述】:

我在 pact-jvm-consumer 中遇到 closeArray 问题。

给定这样的Json,怎么会 构造“DslPart imeiResults = new PactDslJsonBody()”-语句。

{ 
   "Car": {
     "Price": 123,     
     "Features": [
         "rain sensor",
         "cruise control"
     ],
     "Id": "6500"
   }
}

我试过这样:

    DslPart etaResults = new PactDslJsonBody()
           .object("Car")
                .integerType("Price",123)
                .array("Features")
                    .stringValue("rain sensor")
                    .stringValue("cruise control")
                .closeArray()
                .stringValue("Id","6500")
            .closeObject()
            .asBody();

但这不起作用,例如 .closeArray() 不返回 PactDslJsonBody 而是 DslPart,所以在 .closeArray() 之后你永远不能有任何东西?我不明白,有人可以显示如何正确执行此操作的代码吗?

【问题讨论】:

    标签: pact pact-jvm


    【解决方案1】:

    我猜你在closeArray 之后的stringValue 不起作用?

    遗憾的是,当使用array 函数创建数组时,它实际上是creates a new PactDslJsonArray and when closing it, there's no way for that class to know what the parent is, hence it just returns the common superclass of DslPart,这可能会引起一些混乱。需要做的是使用asBody 函数将DslPart 转换回PactDslJsonBody。所以,你的例子应该是这样的:

    DslPart etaResults = new PactDslJsonBody()
       .object("Car")
            .integerType("Price",123)
            .array("Features")
                .stringValue("rain sensor")
                .stringValue("cruise control")
            .closeArray()
            .asBody()
            .stringValue("Id","6500")
        .closeObject();
    

    现在,我们知道这很令人困惑,hence why we started working on a new DSL using Java 8's Lambda functions 试图让体验变得更好。希望对您有所帮助。

    【讨论】:

    • 好的,我可以让这个例子工作。但现在我又被困住了。你协助从这个 Json 创建一个 DslPart:{“Inventory”:[{“Car”:{“gearbox”:“automatic”,“ProductId”:30212},“Camera”:{“EndPrice”:1235,“条件”:[“FaultyButtons”,“FaultyCasing”],“ModelId”:“650”}}],“IsSuccess”:true,“Info”:“Ok”}
    • 您遇到了什么问题?我不热衷于为你做这项工作。请尝试返回一个实际问题。完全开始一个新问题可能会更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多