Enums 如何使用模式验证空手道中的多个可能值
我目前使用的是一个招摇过市的模式,它为几个值定义枚举。我想知道我怎样才能对我的自大文件做出回应。我希望确保返回的响应值仅是模式中指定的值之一(想想Swagger中的enum)。如果响应中返回了架构内数组中未定义的任何其他内容,则测试应该失败 我如何使用以下方法实现这一点: Schema.jsonEnums 如何使用模式验证空手道中的多个可能值,enums,swagger,karate,Enums,Swagger,Karate,我目前使用的是一个招摇过市的模式,它为几个值定义枚举。我想知道我怎样才能对我的自大文件做出回应。我希望确保返回的响应值仅是模式中指定的值之一(想想Swagger中的enum)。如果响应中返回了架构内数组中未定义的任何其他内容,则测试应该失败 我如何使用以下方法实现这一点: Schema.json { "itemType":{ "hardware":[ "VIDEO CARD", "SOLID STATE DRIVE",
{
"itemType":{
"hardware":[
"VIDEO CARD",
"SOLID STATE DRIVE",
"HARD DRIVE"
]
}
}
所有值都是可选的,并将以字符串值响应
答复:
{
"itemType": {
"hardware": "HARD DRIVE"
}
}
我的猜测是,它可能与match response.itemType.hardware==“###string?==‘视频卡’| | | u==‘固态驱动器’| | | u==‘硬盘驱动器’类似,但我的语法可能不正确。您可以尝试以下方法:
* def schema =
"""
{
"itemType":{
"hardware":[
"VIDEO CARD",
"SOLID STATE DRIVE",
"HARD DRIVE"
]
}
}
"""
* def response =
"""
{
"itemType": {
"hardware": "HARD DRIVE"
}
}
"""
* match response == { itemType: { hardware: '#? schema.itemType.hardware.contains(_)' } }
* def isValidHardware = function(x){ return schema.itemType.hardware.contains(x) }
* match response == { itemType: { hardware: '#? isValidHardware(_)' } }
我觉得这更具可读性:
* match schema.itemType.hardware contains response.itemType.hardware
右侧有响应
可能有点不寻常