2017-12-21 1 views
1

pact-jvm-consumer의 closeArray에 문제가 있습니다.Pact JVM closeArray

이렇게 Json이 주어지면 "DslPart imeiResults = new PactDslJsonBody()"- 구문이 어떻게 구성되는지 확인하십시오. 당신이 .closeArray 후 아무것도하지 않아도 할 수 있도록(), 예 .closeArray() PactDslJsonBody하지만 DslPart을 반환하지 않습니다를 들어,

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

을하지만 그것은 작동하지 않습니다

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

나는이 같은 시도? 나는 그것을 얻지 못한다. 누군가 올바른 방법으로 코드를 어떻게 보여줄 수 있는가?

답변

0

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 기능을 사용하여 PactDslJsonBody에 다시 DslPart을 전송하는 것입니다. 더 나은 경험을 만들려고 노력

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 : 그래서, 당신의 예는 같은 것을해야한다. 희망이 도움이됩니다.

+0

좋아요, 그 예제를 사용할 수 있습니다. 하지만 지금은 다시 붙어 있습니다. 이 JSON에서 DslPart을 만드는 데 도움이 CA : { "재고"[ { "자동차": { "기어 박스" "제품 ID", "자동": 30,212 }, "카메라" { "EndPrice"1235, "조건"[ "를 FaultyCasing" "FaultyButtons"] "ModelId": "650" } } ] "IsSuccess"참 "정보": "확인" } –

+0

무슨 문제가 있습니까? 나는 너를 위해 일하는 일에 열중하지 않는다. 실제 질문을 시도해보십시오. 새로운 질문을 시작하는 것이 더 나을 수도 있습니다. –

관련 문제