Я наконец-то получил Karate, работающий с GraphQL, и могу проверить простой ответ 200, хотя у меня возникают проблемы с проверкой схемы, а затем с ответом. Я супер новичок, поэтому прошу прощения (не программист, а просто тестировщик). Я хочу убедиться, что схема верна и, например, просто возвращаются результаты (providerID, firstName, lastName и т. д.), А не данные. Затем я хочу проверить сами данные отдельно. Еще я не понимаю, как передавать данные, например, где я могу изменить широту, долготу, максимальное расстояние и т. д. И сделать их переменной. В этом примере я вижу, как «name» используется в качестве переменной, но, похоже, они передаются по-другому, поэтому я не уверен, как это сделать. Извините за то, что не знаю так много, я ценю помощь.
Scenario: simple graphql request
#Verify 200 response status returned
Given text query =
"""
{
Results: getSearchResults(searchLatitude:"38.942833",
searchLongitude: "-119.984549", providerType: "Primary Care Physicians",
sortBy: "distance", maxDistance:"600",skip: 0, take: 10) {
providerID
firstName
lastName
mI
title
name
nameLFMT
status
specialties
locations
institutions
acceptNewPatient
imageUri
distanceToNearest
}
}
"""
And request { query: '#(query)' }
When method post
Then status 200
# pretty print the response
* print 'response:', response
# the '..' wildcard is useful for traversing deeply nested parts of the
json
* def results = get[0] response..Results
* match results contains { ProviderId: 520, firstName: 'Richard',
lastName: 'Botto' }




Взгляните на ключевое слово replace.
Тогда попробуйте это:
Given text query =
"""
{
Results: getSearchResults(searchLatitude:"<searchLatitude>",
searchLongitude: "<searchLongitude>", providerType: "Primary Care Physicians",
sortBy: "distance", maxDistance:"600",skip: 0, take: 10) {
providerID
firstName
lastName
mI
title
name
nameLFMT
status
specialties
locations
institutions
acceptNewPatient
imageUri
distanceToNearest
}
}
"""
* replace query.searchLatitude = '38.942833'
* replace query.searchLongitude = '-119.984549'
Как только вы получите эту рабочую версию, поищите в документации по "graphql" дополнительные идеи.
Для сопоставления схемы это должно быть легко:
* match results contains { ProviderId: '#number', firstName: '#string', lastName: '#string' }
В документе есть целый раздел о нечеткое соответствие.
@ Jo-AnneB звучит так, будто вам просто нужно привыкнуть к вложенным JSON и массивам. Я предлагаю вам отметить этот ответ как принятый и открыть новый вопрос с простым примером ответа JSON, который вы хотите проверить. вы также можете просмотреть некоторые из этих примеров: github.com/intuit/karate/blob/master/karate-junit4/src/test/…
@PeterSmith, замена прошла отлично, спасибо. Я борюсь с результатами матча, содержащимися до сих пор. Я попробовал это с более простым запросом GraphQL и безуспешно ответил. Более простой запрос возвращает длинный массив / объект, который выглядит следующим образом (10 в массиве), но я не могу понять, как его реализовать. data: '#object', {getClaimHeadersList: '#array', [{ClaimNumber: '# string', ClaimStatus: '#string', totalPatientResponsibility: '# number', providerName: '#string', memberName: '#string '}]}