Spring-Cloud-Contract динамически возвращает логическое значение из запроса в теле ответа

Я пишу весенние облачные контракты с использованием YAML DSL и столкнулся со следующей проблемой.

Я пытаюсь динамически вернуть логическое значение из запроса в теле моего ответа. Когда я устанавливаю тело как логическое значение из запроса, ответ возвращает логическое значение как строку, а не как логическое значение. Есть ли способ динамически возвращать логическое значение, чтобы получить желаемый ответ в приведенном ниже примере?

Пример контракта:

name: POST foo
request:
  method: POST
  urlPath: /foo
  body:
    myBool: true
  matchers:
    body:
      - path: $.myBool
        type: by_regex
        predefined: any_boolean
response:
  status: 201
  body:
    myBool: "{{{ jsonpath this '$.myBool' }}}"

Желаемый ответ:

{
  myBool: true
}

Фактический ответ

{
  myBool: "true"
}

person Joseph    schedule 20.01.2020    source источник


Ответы (1)


Согласно документации (https://cloud.spring.io/spring-cloud-static/spring-cloud-contract/2.2.1.RELEASE/reference/html/project-features.html#yaml ) вы можете указать тип с помощью regexType следующим образом

- path: $.thing1
  type: by_regex
  value: thing2
  regexType: as_string

поэтому в вашем случае просто укажите regexType: as_boolean

person Marcin Grzejszczak    schedule 20.01.2020
comment
Я не смог заставить это работать. Я что-то упускаю? Документация не очень понятна. Я веду точно такое же поведение. Я добавил к ответу следующее: - person Joseph; 21.01.2020
comment
Что именно непонятно? У вас есть то же самое, что и вы, но тип регулярного выражения отличается, и я скопировал то, что вам следует делать. - person Marcin Grzejszczak; 21.01.2020
comment
Добавление этого сопоставителя не сработало. Мне нужно преобразовать значение как bool, используя код, описанный здесь: cloud.spring.io/spring-cloud-static/spring-cloud-contract/ - person Joseph; 21.01.2020
comment
Создайте образец, который воспроизводит проблему, и сообщите о проблеме - person Marcin Grzejszczak; 21.01.2020
comment
Вот суть с более подробной информацией. Надеюсь, это более ясно, оно включает в себя предложение, которое вы мне дали. Однако я не уверен, что реализовал это так, как вы предполагали. gist.github.com/JosephGaiser/08190da6de7fc43cdf0b41ea8de690d - person Joseph; 21.01.2020
comment
Если вы считаете, что это ошибка, дайте мне знать, и я сообщу о проблеме. Я думаю, что я просто делаю что-то не так. Взгляните на суть, которую я опубликовал выше, и дайте мне знать. Спасибо! - person Joseph; 22.01.2020
comment
Вы написали этот someBool: {{{jsonpath this '$ .someBool'}}}, что, если вы уберете скобки? - person Marcin Grzejszczak; 22.01.2020
comment
Вы это читали? {{{jsonpath this 'your.json.path'}}}: возвращает элемент из запроса, который соответствует пути JSON. Например, для пути JSON $ .here используйте {{{jsonpath this '$ .here'}}}. Вам нужны скобки ... Кто-нибудь еще может помочь с этим? Похоже, вы не знакомы с yaml dsl - person Joseph; 22.01.2020
comment
Спасибо @Joseph за ваш любезный ответ, я являюсь автором этой библиотеки и этого DSL (но, возможно, как вы говорите, я не знаком с YAML DSL). Удачи в исправлении этого с кем-нибудь другим. До свидания! - person Marcin Grzejszczak; 22.01.2020
comment
Я ценю ваше время, Марчин. Я обновлю этот пост, если мне удастся найти решение. - person Joseph; 22.01.2020