我正在尝试创建一个模拟服务器来处理 Karate 中的功能测试。为此,我需要根据传入 requests 中某些元素(如方法、路径和“授权”标头的存在)来匹配某些传入的 requests。
我的情况是这样的:
methodIs('get') && pathMatches('/mypath')
我需要为 request 中存在“授权”标头编写条件。
根据文档,我们可以使用:
karate.get('requestHeaders.Authorization[0]') == 'foo'
但是,当我尝试使用上述内容时,它不起作用。我检查了 requestHeaders.Authorization[0]
的存在,但它被返回为 Null
。我的想法是将上面的内容修改为 karate.get('requestHeaders.Authorization[0]') == '#notnull'
之类的内容。
我最终尝试了 headerContains('Authorization','')
,它似乎正在工作 - 但是我不确定这是否是检查该特定标头是否存在的正确方法。还有其他(更好的)方法可以做到这一点吗?
回答1
我们计划在未来的版本中对此进行改进:https://github.com/karatelabs/karate/issues/1962
同时,我会认为像 requestHeaders.Authorization
这样的简单 JavaScript 条件会起作用。例如:
Scenario: requestHeaders.Authorization && methodIs('get')
不幸的是,它区分大小写,这是我们计划在未来版本中解决的问题。您暂时可以使用 OR 条件。