2016-12-22 18 views
2

我正在嘗試使用獨立模式創建API模擬。響應主體依賴於請求主體中的屬性。在WireMock中請求正文匹配(非JSON/XML)

隨着JSON,我能夠做到。下面是示例映射:

{ 
    "request":{ 
     "method":"POST", 
     "bodyPatterns":[ 
     { 
      "matchesJsonPath":"$.somekey.subkey[?(@.attribute == 'VALUE_123')]" 
     } 
     ] 
    }, 
    "response":{ 
     "status":200, 
     "bodyFileName":"res.dat", 
     "headers":{ 
     "Content-Type":"application/x-proto;charset=UTF-8" 
     } 
    } 
} 

但是我的主要要求是應對谷歌protobuf的,我試圖用文本格式代替它的是褻慢會用嘲笑的API響應。因此,請求文件爲文本格式,並且沒有任何JSON驗證(如雙引號或每行末尾的逗號等)。

我發現使用JSON路徑,wiremock無法匹配請求主體由於格式不正確。 例如,像這樣的請求:的

{ 
animal { 
type { 
key1: "value" 
key2: value2 
} 
} 
} 

代替

{ 
    "animal":{ 
     "type":{ 
     "key1":"value", 
     "key2":"value2" 
     } 
    } 
} 

比方說key1 = value1應匹配和response1.json應返回時,或者當key1 = someOtherValue,然後response2.json應該返回。 是的,鍵是類型的一部分,類型是動物的一部分。我怎樣才能實現這個請求身體匹配?

回答

1

你可以這樣做:

{ 
    "request": { 
    "method": "POST", 
    "url": "/authorize/oauth2/token", 
    "bodyPatterns": [ { 
      "matches": ".username=(test)&." 
     } 
    ] 
    }, 
    "response": { 
    "status": 200, 
    . . . 

而且https://github.com/tomakehurst/wiremock/issues/575

+0

好吧,我只是想通了這一點以後。感謝您的迴應。 – xploreraj

+1

這是另外一個: ''bodyPatterns「:[{」contains「:」type:CREDIT「 }]' – xploreraj