Подтвердите, что ответ JSON является картой, а не массивом карт

При написании контрактных тестов для нашего простого REST API я заметил, что не могу выразить разницу между ресурсом, возвращающим список/массив моей сущности, и ресурсом, возвращающим только один экземпляр сущности.

response { // (6)
    [..]
    body([[
                  id               : $(regex('.*')),
                  title            : $('Title1'),
          ], [
                  id               : $(regex('.*')),
                  title            : $('Title2'),
          ]
    ])
    headers {// (9)
        contentType('application/json')
    }
}

Где я тестирую ресурс, возвращая одну запись с:

response { // (6)
    [..]
    body([
            id: $(regex('.*')),
            title: $(producer(regex('.*')), consumer('Der Titel1'))
    ]
    )
    headers {// (9)
        contentType('application/json')
    }
}

Проблема в том, что более низкая спецификация также отлично проверяет фактический ресурс, возвращающий список моих сущностей.

Как я могу выразить разницу между ними?


person Markward Schubert    schedule 28.04.2017    source источник


Ответы (1)


Я думаю, вам следует использовать раздел testMatchers, чтобы либо указать явный путь JSON, который подтвердит ваш случай так, как вы хотите, либо предоставить byType chcek таким образом, чтобы он проверял, есть ли у вас список или карта (http://cloud.spring.io/spring-cloud-static/spring-cloud-contract/1.0.4.RELEASE/#_dynamic_properties_in_matchers_sections).

person Marcin Grzejszczak    schedule 28.04.2017