SpringCloud Contract DSL

2023-12-12 17:57 更新

Spring Cloud Contract支持2種類型的DSL。一種寫在?Groovy?中,另一種寫在?YAML?中。

如果您決定將合同寫在Groovy中,那么如果您以前沒有使用過Groovy,請不要驚慌。確實不需要語言知識,因為Contract DSL僅使用它的一小部分(僅文字,方法調(diào)用和閉包)。同樣,DSL是靜態(tài)類型的,以使其在不了解DSL本身的情況下就可以被程序員讀取。

請記住,在Groovy合同文件中,必須為Contract類和make靜態(tài)導(dǎo)入(例如org.springframework.cloud.spec.Contract.make { …? })提供完全限定名稱。您還可以導(dǎo)入Contract類:import org.springframework.cloud.spec.Contract,然后調(diào)用Contract.make { …? }。

Spring Cloud Contract支持在單個文件中定義多個合同。

以下是YAML合同定義的完整示例:

description: Some description
name: some name
priority: 8
ignored: true
request:
  url: /foo
  queryParameters:
    a: b
    b: c
  method: PUT
  headers:
    foo: bar
    fooReq: baz
  body:
    foo: bar
  matchers:
    body:
      - path: $.foo
        type: by_regex
        value: bar
    headers:
      - key: foo
        regex: bar
response:
  status: 200
  headers:
    foo2: bar
    foo3: foo33
    fooRes: baz
  body:
    foo2: bar
    foo3: baz
    nullValue: null
  matchers:
    body:
      - path: $.foo2
        type: by_regex
        value: bar
      - path: $.foo3
        type: by_command
        value: executeMe($it)
      - path: $.nullValue
        type: by_null
        value: null
    headers:
      - key: foo2
        regex: bar
      - key: foo3
        command: andMeToo($it)

 您可以使用獨立的maven命令將合同編譯為存根映射:mvn org.springframework.cloud:spring-cloud-contract-maven-plugin:convert

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號