空手道框架 - 如何检查条件或匹配包含响应

问题描述 投票:1回答:1

我试图用一根火柴包含验证我的架构响应和数据类型,有时它返回一个空,有时它会返回一个字符串,作为一个例子。我尝试以下,但我得到的断言失败,因为它没有计算为true。

我想以下几点:

* match each $response.data.Results contains

        """
        {
        "providerID": '#number',
        "firstName": "#? _ == '#string' || _ == '#null'",
        "lastName": '#string',
        "mI": "#? _ == '#string' || _ == '#null'",
        "title": '#string',
        "name": '#string',
        "nameLFMT": '#string',
        "status": '#string',
        "specialties": '#array',
        "locations": '#array',
        "institutions": '#array',
        "acceptNewPatient": '#string',
        "imageUri": '#string',
        "nearestLatitude": '#number',
        "nearestLongitude": '#number'
        }

            """

数据返回的“名字”,例如是“名字”:空,

在此之前的比赛每一个我送这样的:

Scenario: SearchResults
  #Verify 200 response status returned
Given text query =
        """
     {
                  Results: getSearchResults(searchLatitude:"48.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
                                        nearestLatitude
                                        nearestLongitude
                        }

    }

        """

And request { query: '#(query)' }
When method post
Then status 200

我不定义模式,我还没有搞清楚如何做到这一点,所以我不知道这是我的问题。我知道这可能是我应该怎么做,但我还在学习。

谢谢你的帮助。

java json automated-tests graphql karate
1个回答
2
投票

好吧,我看到这里有一个问题:

"firstName": "#? _ == '#string' || _ == '#null'"

这是行不通的。下面的#?的部分必须是一个有效的JavaScript表达式。这可能是很难理解,如果你不熟悉JS,但#string和朋友是特定于空手道match关键字,而不是那种在JavaScript的工作。

那么,上述行做的是检查是否firstName的值等于文字字符串#string

幸运的空手道有一个解决方案:(参考文档为“fuzzy matching”):

"firstName": "##string"

这是一个方便,双##意味着“可选”将匹配两个字符串或null

© www.soinside.com 2019 - 2024. All rights reserved.