Можно ли извлечь значение одной из пар ключ-значение в запросе, чтобы быть утвержденным - PullRequest
4 голосов
/ 16 января 2020

Питер предоставил мне решение использовать каратэ 0.9.3 для применения утверждения из примеров

Попытка сделать какое-то утверждение из запроса, которое будет присутствовать в ответе

Мне было интересно, можно ли утверждать значение из запроса вместо полного запроса.

**Background:**
*  configure headers = read('classpath:merchantServiceheaders.js')

   Given url MservUrl 
   And path 'XXXXXX'

   And request Data
   When method POST 
   Then status 200 
   And match response != null 
   And match $ contains {serviceName: 'XXXXX'Service', responseMessage: 
   'Success' }
   And match each $.clauses..responseMessage == 'Success'
   And match each $..predicate != null
   And match each $..predicate == '#present'
   And match each $..predicate == '#regex [^0-9]+[0-9]*$'
   And match $..predicate contains Data.clauses.subject

   Examples: 
   |Data!                                               |
   |'{"clauses":[{"subject":"XXXX","predicate":"999999"}, 
   {"subject":"XXXXX","predicate":"99999"}]}'|

я пытаюсь сделать это на предикате And match $ ... содержит Data.clauses.subject

, что возможный?

Ответы [ 2 ]

5 голосов
/ 17 января 2020

Да, это очень возможно, если Data определена как переменная. Но учтите, что $..predicate всегда будет JSON массивом: https://github.com/intuit/karate#get -plus-index

Если вам нужна помощь, создайте простой рабочий пример.

2 голосов
/ 20 января 2020

Код образца:

Feature: Validation

    Scenario:

        * def resp = {predicate : "4325325456545646"}
        * def data =
            """
            {
                "clauses": [
                    {
                        "subject": "5432154321543210",
                        "predicate": "4432154321543210"
                    },
                    {
                        "subject": "4325325456545646",
                        "predicate": "4325325456545646"
                    }
                ]
            }
            """
        * def sublist = get data.clauses[*].subject
        * print sublist
        * match sublist contains resp.predicate
...