Как построить POJO как для сложной структуры запроса с использованием каратэ? - PullRequest
1 голос
/ 27 февраля 2020

Я хочу построить сложный POJO во время выполнения на основе сценария. В приведенном ниже примере структуры запроса рассматриваем address.line1 как обязательное поле, и мне не нужно каждый раз пропускать другие поля, но это необходимо делать на основе тестовых случаев.

{
        "site": [{
                "code": "string",
                "mrn": "string"
            }
        ],
        "email": ["string"],
        "addresses": [{
                "line1": "string",
                "line2": "string",
                "city": "string",
                "state": "string",
                "postalCode": "string"
            }
        ],
        "names": [{
                "first": "string",
                "middle": "string",
                "last": "string",
                "suffix": "string"
            }
        ]
    }

Пример: для TestCase # 1 мне нужно только ниже JSON:

{      
        "addresses": [{
                "line1": "string"                 
            }
        ]           
    }

Где, как для TestCase # 2, мне нужно ниже JSON

{
        "email": ["string"],
        "addresses": [{
                "line1": "string",
                "line2": "string"
            }
        ],
        "names": [{
                "first": "string",
                "last": "string"
            }
        ]
    }

Я ссылался https://github.com/intuit/karate/blob/master/karate-demo/src/test/java/demo/outline/examples.feature, но пример был довольно просто с заменяемыми значениями.

Я искал что-то вроде @JsonInclude (JsonInclude.Include.NON_DEFAULT)

1 Ответ

0 голосов
/ 27 февраля 2020

Каратэ предназначено для того, чтобы полностью избегать POJO, и дает вам полный контроль над созданием и модификацией комплекса JSON. Поэтому я предлагаю вам временно забыть о POJO и Java, иначе вы не сможете получить лучшее от каратэ.

Есть несколько способов сделать это, но вот один. Сначала сохраните комплекс JSON в файле с именем main.json

. Затем создать различные варианты просто:

Background:
* def main = read('main.json')

Scenario: one
* def payload = karate.filterKeys(main, 'addresses')

Scenario: two
* def payload = main
* remove payload.site

Я предлагаю вам прочитать документы по чтению файлов. , чтобы получить больше идей, обратите внимание на встроенные выражения .

...