首页 文章

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

提问于
浏览
1

我试图使用匹配包含来验证我的架构响应和数据类型,有时它返回一个null,有时它会返回一个字符串,作为一个例子 . 我正在尝试以下但我得到断言失败,因为它没有评估为真 .

我正在尝试以下方法:

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

            """

例如,为“firstName”返回的数据是“firstName”:null,

在比赛之前,我发送的是:

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

我没有定义架构,我还没有弄清楚如何做到这一点所以我不确定这是不是我的问题 . 我知道这可能是我应该怎么做但我还在学习 .

谢谢你的帮助 .

1 回答

  • 1

    好的,我在这里看到一个问题:

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

    那不行 . #? 之后的部分必须是有效的JavaScript表达式 . 如果您不熟悉JS但是 #string 并且朋友特定于Karate match 关键字并且不适用于JavaScript,那么这可能很难理解 .

    那么上面的代码就是检查 firstName 的值是否等于文字字符串 #string .

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

    "firstName": "##string"
    

    哪个是方便,双 ## 表示'optional'将匹配字符串或 null .

相关问题