如何正确使用自我验证表达式#??

How to properly use the self validation expressions #??

所以我有一个字段角色的响应是枚举类型

'{
    "content": [
        {
            "id": "1",
            "roles": [],
        },
        {
            "id": "2",
            "roles": [
                "manager"
            ]
        },
        {
            "id": "3",
            "roles": [
                "client"
            ],
        }
    ],
}'

我想验证响应中的角色是枚举类型,所以我尝试了类似

的方法
* match each response..role == ['#? enumRoles.contains(_)'}

但一直出错。我正在尝试的解决方案来自 。然后我发现那里接受的解决方案也产生了意外的文件结束和消息不支持的错误。

感谢任何帮助。我正在使用 1.2.0.RC1

这比我预期的要棘手,但这里有一个解决方案。请阅读文档以了解 API 的作用。

* def response =
"""
{
    "content": [
        {
            "id": "1",
            "roles": [],
        },
        {
            "id": "2",
            "roles": [
                "manager"
            ]
        },
        {
            "id": "3",
            "roles": [
                "client"
            ],
        }
    ]
}
"""
* def roles = ['manager', 'client']
* def temp1 = $..roles[*]
* def temp2 = karate.distinct(temp1)
* match roles contains temp2

普通的 JSON 中没有枚举这样的东西。如果需要,考虑编写自定义 JS 函数,这里是一个例子: