request - 检查 Karate 中是否存在 Request 标头

我正在尝试创建一个模拟服务器来处理 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 条件。

更多解释请参考:https://stackoverflow.com/a/55823180/143475

相似文章

随机推荐

最新文章