У меня возникли проблемы с проверкой вложенного JSON с массивами. У меня есть запрос GraphQL, который выглядит так, он самый простой из тех, что у меня есть. Я изменил данные, так как это реальные производственные данные, но, очевидно, вы понимаете идею. Из предыдущих чатов с @petersmith я понимаю, что * результаты совпадений - отличный способ, и я также пробовал читать из файла .json, но я должен форматировать файл json неправильно или что-то не так, потому что я получаю сообщения об ошибках в javascript оценка не удалась или данные не найдены и т. д. Я действительно просто хочу проверить типы данных, что поля вообще существуют (ClaimNumber, ClaimStatus, totalPatientResponsibility, providerName и memberName), и я хочу передать недопустимый и / или нулевой memberNumber и посмотрите, как он отреагирует. Они кажутся такими простыми, но я сделал это только с REST и Cucumber, используя Ruby, так что теперь у меня, похоже, проблемы. Спасибо!
{
getClaimHeadersList(memberNumber:"1111111111") {
claimNumber
claimStatus
totalPatientResponsibility
providerName
memberName
}
}
Ответ следующий:
{
"data": {
"getClaimHeadersList": [
{
"claimNumber": "01-010111-111-11",
"claimStatus": "Pended",
"totalPatientResponsibility": 0.00,
"providerName": "LastName, FirstName",
"memberName": "LastName, FirstName M"
},
{
"claimNumber": "01-010111-111-11",
"claimStatus": "Pended",
"totalPatientResponsibility": 0.00,
"providerName": "LastName, FirstName",
"memberName": "LastName, FirstName M"
},
{
"claimNumber": "01-010111-111-11",
"claimStatus": "Pended",
"totalPatientResponsibility": 0.00,
"providerName": "LastName, FirstName",
"memberName": "LastName, FirstName M"
},
{
"claimNumber": "01-010111-111-11",
"claimStatus": "Posted",
"totalPatientResponsibility": 0.00,
"providerName": "LastName, FirstName",
"memberName": "LastName, FirstName M"
},
{
"claimNumber": "01-010111-111-11",
"claimStatus": "Posted",
"totalPatientResponsibility": 0.00,
"providerName": "LastName, FirstName",
"memberName": "LastName, FirstName M"
},
{
"claimNumber": "01-010111-111-11",
"claimStatus": "Posted",
"totalPatientResponsibility": 0.00,
"providerName": "LastName, FirstName",
"memberName": "LastName, FirstName M"
},
{
"claimNumber": "01-010111-111-11",
"claimStatus": "Posted",
"totalPatientResponsibility": 0.00,
"providerName": "LastName, FirstName",
"memberName": "LastName, FirstName M"
},
{
"claimNumber": "01-010111-111-11",
"claimStatus": "Posted",
"totalPatientResponsibility": 0.00,
"providerName": "LastName, FirstName",
"memberName": "LastName, FirstName M"
},
{
"claimNumber": "01-010111-111-11",
"claimStatus": "Posted",
"totalPatientResponsibility": 0.00,
"providerName": "LastName, FirstName",
"memberName": "LastName, FirstName M"
},
{
"claimNumber": "01-010111-111-11",
"claimStatus": "Posted",
"totalPatientResponsibility": 0.00,
"providerName": "LastName, FirstName",
"memberName": "LastName, FirstName M"
}
]
}
}

Вы можете вставить весь приведенный ниже раздел в новый сценарий и посмотреть, как он работает.
* def response =
"""
{
"data":{
"getClaimHeadersList":[
{
"claimNumber":"01-010111-111-11",
"claimStatus":"Pended",
"totalPatientResponsibility":0.00,
"providerName":"LastName, FirstName",
"memberName":"LastName, FirstName M"
},
{
"claimNumber":"01-010111-111-11",
"claimStatus":"Pended",
"totalPatientResponsibility":0.00,
"providerName":"LastName, FirstName",
"memberName":"LastName, FirstName M"
},
{
"claimNumber":"01-010111-111-11",
"claimStatus":"Pended",
"totalPatientResponsibility":0.00,
"providerName":"LastName, FirstName",
"memberName":"LastName, FirstName M"
},
{
"claimNumber":"01-010111-111-11",
"claimStatus":"Posted",
"totalPatientResponsibility":0.00,
"providerName":"LastName, FirstName",
"memberName":"LastName, FirstName M"
},
{
"claimNumber":"01-010111-111-11",
"claimStatus":"Posted",
"totalPatientResponsibility":0.00,
"providerName":"LastName, FirstName",
"memberName":"LastName, FirstName M"
},
{
"claimNumber":"01-010111-111-11",
"claimStatus":"Posted",
"totalPatientResponsibility":0.00,
"providerName":"LastName, FirstName",
"memberName":"LastName, FirstName M"
},
{
"claimNumber":"01-010111-111-11",
"claimStatus":"Posted",
"totalPatientResponsibility":0.00,
"providerName":"LastName, FirstName",
"memberName":"LastName, FirstName M"
},
{
"claimNumber":"01-010111-111-11",
"claimStatus":"Posted",
"totalPatientResponsibility":0.00,
"providerName":"LastName, FirstName",
"memberName":"LastName, FirstName M"
},
{
"claimNumber":"01-010111-111-11",
"claimStatus":"Posted",
"totalPatientResponsibility":0.00,
"providerName":"LastName, FirstName",
"memberName":"LastName, FirstName M"
},
{
"claimNumber":"01-010111-111-11",
"claimStatus":"Posted",
"totalPatientResponsibility":0.00,
"providerName":"LastName, FirstName",
"memberName":"LastName, FirstName M"
}
]
}
}
"""
# get only the claims part out of the response as an array
* def claims = get[0] response $..getClaimHeadersList
* print claims
# assert that there are exactly 10 claims
* match claims == '#[10]'
# assert that each claim has the exact values. note the special handling of 'claimStatus'
* match each claims == { "claimNumber":"01-010111-111-11", "claimStatus":"#? _ == 'Pended' || _ == 'Posted'", "totalPatientResponsibility":0.00, "providerName":"LastName, FirstName", "memberName":"LastName, FirstName M" }
# define a reusable 'schema' for the claim object, includes example of regex validation
* def claimSchema = { claimNumber: '#regex [0-1-]*', claimStatus: '#string', totalPatientResponsibility: '#number', providerName: '#string', memberName: '#string' }
# assert that each claim has all the keys expected and in the format expected
* match each claims == claimSchema
Идеально @PeterThomas! Думаю, я медленно понимаю, как это сделать с вашими примерами. Мы также работали вчера вечером, и это тоже работает, так что это очень полезно. # Проверить схему и тип данных * соответствуют каждому $ response.data.getClaimHeadersList содержит "" "{" ClaimNumber ": '#regex [0-9] {2} - [0-9] {6} - [0-9] {3} - [0-9] {2} ', "ClaimStatus":' #regex (Pended | Опубликовано) ', "totalPatientResponsibility":' #number ', "providerName":' #string ', "memberName": '#нить' } """