Каратэ - GraphQL - Как проверить схему, а затем ответ?

Я наконец-то получил 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' }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
899
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Взгляните на ключевое слово 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' }

В документе есть целый раздел о нечеткое соответствие.

@PeterSmith, замена прошла отлично, спасибо. Я борюсь с результатами матча, содержащимися до сих пор. Я попробовал это с более простым запросом GraphQL и безуспешно ответил. Более простой запрос возвращает длинный массив / объект, который выглядит следующим образом (10 в массиве), но я не могу понять, как его реализовать. data: '#object', {getClaimHeadersList: '#array', [{ClaimNumber: '# string', ClaimStatus: '#string', totalPatientResponsibility: '# number', providerName: '#string', memberName: '#string '}]}

Jo-Anne 20.03.2018 18:20

@ Jo-AnneB звучит так, будто вам просто нужно привыкнуть к вложенным JSON и массивам. Я предлагаю вам отметить этот ответ как принятый и открыть новый вопрос с простым примером ответа JSON, который вы хотите проверить. вы также можете просмотреть некоторые из этих примеров: github.com/intuit/karate/blob/master/karate-junit4/src/test/‌…

Peter Thomas 20.03.2018 18:31

Другие вопросы по теме