首页 文章

空手道 - GraphQL - 如何验证架构然后响应?

提问于
浏览
1

我终于让Karate使用GraphQL并且能够验证简单的200响应,尽管我在验证模式然后响应时遇到了问题 . 我是超级新人所以我道歉(不是程序员,只是测试人员) . 我想验证模式是否正确,例如结果只返回(providerID,firstName,lastName等),而不是数据 . 然后我想分别验证数据本身 . 我不明白的另一件事是如何传递数据,例如我可以改变Latitude,Longitude,MaxDistance等,并让它成为一个变量 . 我在示例中看到“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' }

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' }
    

    该文档有fuzzy matching的整个部分 .

相关问题