上传到契约经纪人的契约文件缺少某些细节

问题描述

我有一个junit5 编写的契约消费者测试。

DslPart mySettingsDsl = PactDslJsonArray.arrayEachLike()
            .eachKeyLike("sumne",PactDslJsonRootValue.stringMatcher("sumne|sid","sumne"))
            .stringMatcher("sid","[a-zA-Z0-9]{1,10}")
            .object("sumne",new PactDslJsonBody()
                    .stringType(FOOTER,"footer")
                    .stringType(HEADER,"header")
                    .stringMatcher(MIDDLE,"\\d{7}")
                    .stringMatcher(END,"\\d{3}")
                    .asBody()
            ).close();

return builder
            .uponReceiving("Some Description")
            .matchPath("/v1/" + UUID_REGEX + "/customization")
            .method(GET.name())
            .willRespondWith()
            .status(200)
            .matchHeader(CONTENT_TYPE,APPLICATION_JSON.getMimeType())
            .body(new PactDslJsonBody()
                    .stringType(STATUS,"ok")
                    .object(DATA,new PactDslJsonBody()
                            .stringMatcher(CODE,"\\d{14}")
                            .stringMatcher(APP_NO,"\\d{5}")
                            .stringType(PROD_NAME,"product1")
                            .object(MY_SETTINGS,mySettingsDsl)
                            .asBody())
                    .asBody())
            .toPact();

它会生成一个像这样的协议文件

{
  "provider": {
    "name": "provider"
  },"consumer": {
    "name": "consumer"
  },"interactions": [
    {
      "description": "Some Description","request": {
        "method": "GET","path": "/v1/C2D0B4D3-0Bdc-5CDa-2ffF-E8fEb0c9fE1B/customization","matchingRules": {
          "path": {
            "matchers": [
              {
                "match": "regex","regex": "/v1/[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}/customization"
              }
            ],"combine": "AND"
          }
        }
      },"response": {
        "status": 200,"headers": {
          "Content-Type": "application/json"
        },"body": {
          "data": {
            "code": "84502366577143","appNo": "76703","mySettings": [
              {
                "sumne": {
                  "footer": "footer","header": "header","middle": "8230126","end": "916"
                },"sid": "EfL6wZ"
              }
            ],"prodName": "product1"
          },"status": "ok"
        },"matchingRules": {
          "header": {
            "Content-Type": {
              "matchers": [
                {
                  "match": "regex","regex": "application/json"
                }
              ],"combine": "AND"
            }
          },"body": {
            "$.status": {
              "matchers": [
                {
                  "match": "type"
                }
              ],"combine": "AND"
            },"$.data.code": {
              "matchers": [
                {
                  "match": "regex","regex": "\\d{14}"
                }
              ],"$.data.appNo": {
              "matchers": [
                {
                  "match": "regex","regex": "\\d{5}"
                }
              ],"$.data.prodName": {
              "matchers": [
                {
                  "match": "type"
                }
              ],"$.data.mySettings": {
              "matchers": [
                {
                  "match": "type","min": 0
                }
              ],"$.data.mySettings[*].*": {
              "matchers": [
                {
                  "match": "regex","regex": "sumne|sid"
                }
              ],"$.data.mySettings[*].sid": {
              "matchers": [
                {
                  "match": "regex","regex": "[a-zA-Z0-9]{1,10}"
                }
              ],"$.data.mySettings[*].sumne.footer": {
              "matchers": [
                {
                  "match": "type"
                }
              ],"$.data.mySettings[*].sumne.header": {
              "matchers": [
                {
                  "match": "type"
                }
              ],"$.data.mySettings[*].sumne.middle": {
              "matchers": [
                {
                  "match": "regex","regex": "\\d{7}"
                }
              ],"$.data.mySettings[*].sumne.end": {
              "matchers": [
                {
                  "match": "regex","regex": "\\d{3}"
                }
              ],"combine": "AND"
            }
          }
        },"generators": {
          "body": {
            "$.data.code": {
              "type": "Regex","regex": "\\d{14}"
            },"$.data.appNo": {
              "type": "Regex","regex": "\\d{5}"
            },"$.data[*].sid": {
              "type": "Regex",10}"
            },"$.data[*].sumne.middle": {
              "type": "Regex","regex": "\\d{7}"
            },"$.data[*].sumne.end": {
              "type": "Regex","regex": "\\d{3}"
            }
          }
        }
      }
    }
  ],"Metadata": {
    "pactSpecification": {
      "version": "3.0.0"
    },"pact-jvm": {
      "version": "4.1.13"
    }
  }
}

但是当使用 mvn pact:publish 推送到 Pact broker 时,我只能在 pactbroker 中看到其中的一部分。

{
  "status": 200,"headers": {
    "Content-Type": "application/json"
  },"body": {
    "data": {
      "code": "84502366577143","mySettings": [

      ],"prodName": "product1"
    },"status": "ok"
  }
}

mySettings 数组在我在 pactbroker 上看到的 pact 文件中完全为空。这可能是什么问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)