enums - 如何使用模式验证 Karate 中的多个可能值

标签 enums swagger karate

我目前正在使用 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/

相关文章:

c++ - 对大枚举值的表示是否有任何保证?

python - 无法卸载 enum34(Python 3.6、MacOS)

Django rest swagger_auto_schema 自定义响应体

mongodb - 为 MongoDB 提供种子以使用 Karate 进行自动化测试的正确方法

c++ - 从 C++ 基类中的函数返回枚举

c - 有什么方法可以让 gcc 发出警告,以便在 C 中将隐式枚举转换为 int?

java - 如何防止Camel swagger 2.16.2的枚举参数类型

java - 使用 @Parameter 注释时,@BeanParam 未记录

Karate :从 API 响应中查找特定元素值的索引

karate - 可以在 Karate 测试中执行curl吗?