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

如何在pact-jvm中用异构数组表示响应

姜学海
2023-03-14

我很难弄清楚如何在pact合同中的数组中表示具有不同结构对象的数组。

来自pact-spec-v3

{
  "suggestions": [
    {
      "display_name": "Potato",
      "type": 1,
      "keyword": "Potato",
      "category_l1": {
        "icon_image_url": "XXXXX",
        "id": 1489,
        "name": "Potato"
      }
    },
    {
      "type": 3,
      "suggestion": {
        "display_name": "New Potato (Aloo)",
        "name": "New Potato"
      }
    }
  ]
}

我目前拥有的代码

private DslPart getBody() {
    return new PactDslJsonBody()
            .eachLike("suggestions", 1)
                    .stringType("display_name")
                    .integerType("type")
                    .stringType("keyword")
                    .object("category_l1")
                        .stringType("icon_image_url")
                        .stringType("name")
                        .integerType("id")
                    .closeObject()
                    .closeObject()
            .closeArray();
}

共有1个答案

洪伟彦
2023-03-14

这目前并不容易用Pact建模,假设每个项目都与提供的示例相似,它就能正常工作。有关讨论,请参阅https://github.com/pact-foundation/pact-specification/issues/38

 类似资料:
  • 所以我有一个包含一些请求和响应数据的json文件,我想要完成的是遍历这些数据并创建一个使用每个请求和响应的pact文件。 所以目前我正在使用junit中的参数化测试来迭代我们的json数据,这基本上是有效的,只是因为生产者名称对于所有pacts都是相同的,它创建了相同的文件并覆盖了前面的文件。 不确定是否有更好的方法来实现这一点,我查看了Github for Pact Jvm并查看了堆栈溢出,但未

  • 我正在尝试使用Pact-JVM在我们的两个服务之间生成一个协议。但是当我尝试运行Java类时,我得到了这个异常。

  • 我在pact-jvm-consumer中的closeArray有问题。 给定这样的Json,如何构造“dslPart imeiResults=new PactDslJsonBody()”-语句。 我试过这样: 但这不起作用,例如.closearray()不返回PactDslJsonBody,而是返回DslPart,所以在.closearray()之后永远不能有任何东西?我不明白,有人能给我们演示一

  • 使用带有spring boot的pact jvm DSL(.timestamp(名称、格式、示例)),我可以指定以下两种: 如果您发送日期dd-MM-yyyy而不是yyyy-MM-dd,我的真正的提供者服务就会出错,但是我不明白当使用者端的测试错误地将格式错误的JSON时间戳发送给提供者API时,您应该如何使测试失败。 即。如下所示的位:

  • 我有一个java的Spring BootAPI,它使用pact-jvm进行pact验证。我们有一个新的客户机,他想使用一个新的路径来使用相同的API,网关会处理这个路径,但这会引起pacts的问题,我想截取请求,并修改请求的路径,使新的pacts指向旧的路径。我试图在网上查阅一些资料,发现:https://medium.com/dazn-tech/pact-contract-testing-dea