我目前正在使用 Swagger 架构,它为多个值定义枚举。我想知道如何针对我的傲慢文件做出回应。我想确保返回的响应值只是架构中指定的值之一(想想 Swagger 中的枚举)。如果响应中返回了架构内数组中未定义的任何其他内容,则测试应该失败。
如何使用以下方法实现此目的:
架构.json
{
"itemType":{
"hardware":[
"VIDEO CARD",
"SOLID STATE DRIVE",
"HARD DRIVE"
]
}
}
所有值都是可选的,并将以字符串值响应。
回应:
{
"itemType": {
"hardware": "HARD DRIVE"
}
}
我的猜测是,它可能类似于 * match response.itemType.hardware == "##string? _ == 'VIDEO CARD' || _ == 'SOLID STATE DRIVE' | | _ == 'HARD DRIVE'"
但我的语法可能不正确。
最佳答案
你可以试试这个:
* 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(_)' } }
关于enums - 如何使用模式验证 Karate 中的多个可能值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59307140/