Karate 1.0.1如何基于操作系统实现命令行输出的条件匹配
方案1:使用karate.eval()包裹match语句
Karate的if关键字后仅支持执行JS表达式,无法直接识别match这类DSL关键字,你可以将match语句作为字符串传入karate.eval()方法执行,修改后的代码如下:
* if(!windows) karate.eval('match out contains "--status [check the status of the tool process and port]"') * if(windows) karate.eval('match out contains "--install [install tool as a windows service]"') * if(windows) karate.eval('match out contains "--remove [remove tool service]"')
该方案改动量小,适合只有少量条件校验的场景。
方案2:预定义系统专属校验规则统一匹配
如果后续需要新增更多跨OS的校验规则,更推荐这种易维护的实现方式:
# 按操作系统生成对应的预期内容列表 * def osSpecificChecks = windows ? [ "--install [install tool as a windows service]", "--remove [remove tool service]" ] : [ "--status [check the status of the tool process and port]" ] # 遍历列表批量执行匹配 * each expectedContent in osSpecificChecks And match out contains expectedContent
该方案将OS专属的预期内容集中管理,不需要编写多个if判断,代码可读性和可维护性更好。
内容的提问来源于stack exchange,提问作者brian
相关产品推荐
相关产品推荐

