当前位置: 首页 > 知识库问答 >
问题:

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

韦泳
2023-03-14

例如,我试图使用匹配包含来验证模式响应和数据类型,有时它返回null,有时返回字符串。我正在尝试下面的操作,但我得到的断言失败了,因为它没有计算为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'
        }

            """

例如,为“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个答案

尤博达
2023-03-14

好吧,我看到了一个问题:

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

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

因此,上面一行要做的是检查firstname的值是否等于文字字符串#string

"firstName": "##string"

这是一种方便,双##表示“可选”,它将同时匹配字符串或null

编辑:有关高级案例,请阅读:https://stackoverflow.com/A/50350442/143475

 类似资料:
  • 我有以下API响应样本 根据上面的回答,我的测试表明,每当我点击API请求时,第11个ID是SMITH,第10个ID是JAMES 所以我想把它存储在一个表中,并根据实际的响应进行断言 现在我该如何一个接一个地匹配?与first类似,它解析API响应中的第一个ID和第一个名称,并与表first ID和表first name匹配 请分享从空手道做它的任何方便的方式

  • 我想要帮助验证API响应使用空手道框架。我有相互“独立”的应用编程接口。当我打那个特定的API得到了不同参数的响应(没有单一的匹配从请求参数和响应参数)。 现在我想验证响应参数值。 示例:请求:“方法”帖子 学校名称:“abcd”注册日期:“1:10:2010” 回复:原则名称:“pqrs”原则电子邮件idpqrs@gmail.com 现在我想验证“主名称”不应该为空 我已经像这样实现了,但它不起

  • 我必须验证一个json是否包含另一个json,就像这个测试: 如果失败,则正确,如下所示? 谢谢

  • 我需要将纪元时间转换为人类可读的日期 时间戳值为:='1685595600' 需要像这样转换上面的时间戳 日期=01月=06年=2023年 应该怎么做?

  • 我想使用“faker”库在JSON文件中生成假数据,如下所示。 空手道配置。js,我做了以下工作: 在sample.json: 但我在“空手道配置”中遇到了类似“找不到”require“关键字的错误。js' 请帮忙。

  • 我可以有一个回应: 如果用户没有狗 或者 如果用户有狗。 在我的特写中,我有: prb是指如果我有一个没有狗的用户响应,我有以下错误: 如何检查模式中的属性“dog”?谢谢