Pact, убедитесь, что имена ключей в массиве - PullRequest
0 голосов
/ 24 апреля 2018

Если возвращенный json является картой, все имена ключей, указанные в ответе тела, будут подтверждены для существования. Так

...
"response": 
{
    "status": 200,
    "body": 
    {
        "field1": "value1"
    }
...

будет гарантировать, что тело содержит ключ "field1", если он отсутствует, возникает ошибка.

Но что, если тело ответа является массивом? Я не вижу возможности проверить, если все или хотя бы один элемент в этом массиве имеют конкретное имя ключа. Но это важно, я хочу получить предупреждение, если имена ключей в бэкенде меняются, потому что это может привести к ошибкам в моем приложении.

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете использовать eachLike, чтобы указать, что элементы массива соответствуют определенному формату.Правильный синтаксис зависит от того, какую платформу Pact вы используете, но с pact-js вы бы сказали:

const { somethingLike: like, term, eachLike } = pact
....

willRespondWith: {
   status: 200,
   body: eachLike({
    "field1": "value1"
   })
}

Вот соответствующая часть документации .


Ваш пример предполагает, что вы пишете файл Pact самостоятельно - если это так, вы можете использовать нотацию [*] для описания любого элемента массива, как описано в спецификации :

"response": 
{
  "status": 200,
  "body": 
    [ 
      {
        "field1": "value1"
      }
    ],
  ...

  "matchingRules": {
     "$.body": {
       "min": 1,
       "match": "type"
     },
     "$.body[*].field1": {
        "match": "type"
     },
  ...
...