首页 文章

空手道 - GraphQL - 使用数组验证嵌套JSON

提问于
浏览
1

我在使用数组验证嵌套JSON时遇到了新的麻烦 . 我有一个看起来像这样的GraphQL查询,它是我所拥有的最简单的查询 . 我已经更改了数据,因为它是真实的 生产环境 数据,但是你可以得到这个想法 . 我从之前与@petersmith的聊天中发现,*匹配结果包含是一个很好的方式,我也尝试从.json文件读取但我必须格式化json文件错误或某些东西已关闭因为我收到有关javascript的错误消息评估失败或没有找到数据等等 . 我真的只想验证数据类型,字段是否存在(claimNumber,claimStatus,totalPatientResponsibility,providerName和memberName),我想传入一个无效的和/或null的memberNumber和看看它是如何反应的 . 这些看起来很简单,但我只使用REST和Cucumber使用Ruby完成它,所以现在我似乎遇到了麻烦 . 谢谢!

{

      getClaimHeadersList(memberNumber:"1111111111") {
        claimNumber
        claimStatus
        totalPatientResponsibility
        providerName
        memberName
      } 
}

回复如下:

{
"data": {
    "getClaimHeadersList": [
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Pended",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Pended",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Pended",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        },
        {
            "claimNumber": "01-010111-111-11",
            "claimStatus": "Posted",
            "totalPatientResponsibility": 0.00,
            "providerName": "LastName, FirstName",
            "memberName": "LastName, FirstName M"
        }
    ]
}

}

1 回答

  • 1

    您可以将以下整个部分粘贴到新的方案中并查看它是否有效 .

    * def response = 
    """
    {
       "data":{
          "getClaimHeadersList":[
             {
                "claimNumber":"01-010111-111-11",
                "claimStatus":"Pended",
                "totalPatientResponsibility":0.00,
                "providerName":"LastName, FirstName",
                "memberName":"LastName, FirstName M"
             },
             {
                "claimNumber":"01-010111-111-11",
                "claimStatus":"Pended",
                "totalPatientResponsibility":0.00,
                "providerName":"LastName, FirstName",
                "memberName":"LastName, FirstName M"
             },
             {
                "claimNumber":"01-010111-111-11",
                "claimStatus":"Pended",
                "totalPatientResponsibility":0.00,
                "providerName":"LastName, FirstName",
                "memberName":"LastName, FirstName M"
             },
             {
                "claimNumber":"01-010111-111-11",
                "claimStatus":"Posted",
                "totalPatientResponsibility":0.00,
                "providerName":"LastName, FirstName",
                "memberName":"LastName, FirstName M"
             },
             {
                "claimNumber":"01-010111-111-11",
                "claimStatus":"Posted",
                "totalPatientResponsibility":0.00,
                "providerName":"LastName, FirstName",
                "memberName":"LastName, FirstName M"
             },
             {
                "claimNumber":"01-010111-111-11",
                "claimStatus":"Posted",
                "totalPatientResponsibility":0.00,
                "providerName":"LastName, FirstName",
                "memberName":"LastName, FirstName M"
             },
             {
                "claimNumber":"01-010111-111-11",
                "claimStatus":"Posted",
                "totalPatientResponsibility":0.00,
                "providerName":"LastName, FirstName",
                "memberName":"LastName, FirstName M"
             },
             {
                "claimNumber":"01-010111-111-11",
                "claimStatus":"Posted",
                "totalPatientResponsibility":0.00,
                "providerName":"LastName, FirstName",
                "memberName":"LastName, FirstName M"
             },
             {
                "claimNumber":"01-010111-111-11",
                "claimStatus":"Posted",
                "totalPatientResponsibility":0.00,
                "providerName":"LastName, FirstName",
                "memberName":"LastName, FirstName M"
             },
             {
                "claimNumber":"01-010111-111-11",
                "claimStatus":"Posted",
                "totalPatientResponsibility":0.00,
                "providerName":"LastName, FirstName",
                "memberName":"LastName, FirstName M"
             }
          ]
       }
    }
    """
    # get only the claims part out of the response as an array
    * def claims =  get[0] response $..getClaimHeadersList
    * print claims
    # assert that there are exactly 10 claims
    * match claims == '#[10]'
    # assert that each claim has the exact values. note the special handling of 'claimStatus'
    * match each claims == { "claimNumber":"01-010111-111-11", "claimStatus":"#? _ == 'Pended' || _ == 'Posted'", "totalPatientResponsibility":0.00, "providerName":"LastName, FirstName", "memberName":"LastName, FirstName M" }
    # define a reusable 'schema' for the claim object, includes example of regex validation
    * def claimSchema = { claimNumber: '#regex [0-1-]*', claimStatus: '#string', totalPatientResponsibility: '#number', providerName: '#string', memberName: '#string' }
    # assert that each claim has all the keys expected and in the format expected
    * match each claims == claimSchema
    

相关问题