Передача параметра в json в тесте spock

#json #parameter-passing #spock

#json #передача параметров #spock

Вопрос:

Я работаю со следующим json в тесте spock, где podCastId является динамическим значением:

 private buildPodCast(long podCastId) {
        String jsonString = '''
        {
          "id": ${podCastId},
          "lang": "en",
          "updated": "2019-04-03T19:48:29Z",
          "premium": false,
          "headline": "The Lowe Post",
          "description": "ESPN's Zach Lowe talks to various basketball people about various basketball things.",
          "thumbnails": {
            "light": {
              "href": "http://a.espncdn.com/i/espn/networks_shows/radio/crops/500/the_lowe_post.png",
              "width": 500,
              "height": 500
            }
          }
        }
        '''
        return JsonUtilKt.transformToJsonNode(jsonString)
    }
  

Моя проблема в том, что я должен передать параметр podCastId в значении id, но в том виде, в котором он есть сейчас, json не принимает значение параметра.

Я борюсь с этим тестом, есть идеи? Спасибо

Ответ №1:

Следующий фрагмент кода также работает нормально — нет необходимости в конкатенации, интерполяция строк (которая работает для """ и не для ''' ) выполняет свою работу:

 def buildPodCast(long podCastId) {
"""
{
    "id": ${podCastId},
    "lang": "en",
    "updated": "2019-04-03T19:48:29Z",
    "premium": false,
    "headline": "The Lowe Post",
    "description": "ESPN's Zach Lowe talks to various basketball people about various basketball things.",
    "thumbnails": {
        "light": {
            "href": "http://a.espncdn.com/i/espn/networks_shows/radio/crops/500/the_lowe_post.png",
            "width": 500,
            "height": 500
        }
    }
}
"""
}
buildPodCast(2)
  

Комментарии:

1. Вы должны объяснить разницу между ''' и """ в Groovy, тогда это было бы более полезно.

2. @rasilvap: Я предлагаю отменить ваш собственный ответ и вместо этого принять этот. Это правильное решение, ваше — обходной путь.

3. Спасибо @kriegaex!!

Ответ №2:

Я использовал конкатенацию строк:

 private buildPodCast(long podCastId) {
        String jsonString = '''
        {
          "id": '''   podCastId   ''',
          "lang": "en",
          "updated": "2019-04-03T19:48:29Z",
          "premium": false,
          "headline": "The Lowe Post",
          "description": "ESPN's Zach Lowe talks to various basketball people about various basketball things.",
          "thumbnails": {
            "light": {
              "href": "http://a.espncdn.com/i/espn/networks_shows/radio/crops/500/the_lowe_post.png",
              "width": 500,
              "height": 500
            }
          }
        }
        '''
        return JsonUtilKt.transformToJsonNode(jsonString)
    }