当前位置: 首页 > 知识库问答 >
问题:

Pact JVM CloseRay

拓拔弘化
2023-03-14

我在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()之后永远不能有任何东西?我不明白,有人能给我们演示一下如何用正确的方法来做这件事吗?

共有1个答案

魏元白
2023-03-14

我猜测您在closearray后面的stringvalue不起作用了?

遗憾的是,当使用array函数创建数组时,它实际上创建了一个新的PactDSLJSONArray并且在关闭它时,该类无法知道父类是什么,因此它只能返回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();

现在,我们知道这是令人困惑的,因此我们开始使用Java8的Lambda函数开发一个新的DSL,试图使体验更好。希望能有所帮助。

 类似资料:

相关问答

相关文章

相关阅读