【问题标题】:Karate Mock Test Doubles not recognizing the headerContains scenario parameter空手道模拟测试双打无法识别 headerContains 场景参数
【发布时间】:2019-12-13 01:19:03
【问题描述】:

这不是关于简单的空手道测试功能文件的问题。这是一个模拟功能文件! 我真的需要在我的模拟功能文件中检查 Autorization 令牌。只要我不使用 headerContains 参数,其他一切都可以正常工作。有了它,我得到一个错误。 我也尝试过'requestHeaders.val [0]',我遇到了同样的问题。 另外,我试图找到一种方法来记录标头的内容,但在模拟功能文件中似乎没有办法做到这一点。 使用 karate.log 不会记录任何请求信息。 这是我在 javascript 场景描述中使用 headerContains 得到的错误:

17:07:14.285 [nioEventLoopGroup-3-1] WARN  com.intuit.karate - scenario match evaluation failed: javascript evaluation failed: pathMatches('/v1/oauth2/accesstoken') && paramValue('grant_type') == 'client_credentials' && methodIs('get') && headerContains('Authorization', 'Basic blablablatoken'), ReferenceError: "headerContains" is not defined in <eval> at line number 1

这是没有它的消息:

17:17:11.787 [nioEventLoopGroup-3-1] DEBUG com.intuit.karate - scenario matched: pathMatches('/v1/oauth2/accesstoken') && paramValue('grant_type') == 'client_credentials' && methodIs('get')

【问题讨论】:

    标签: api header mocking karate


    【解决方案1】:

    抱歉 - 文档有错误,headerContains() 实际上不存在。文档更新于develop

    你能像这样使用karate.get()吗:

    Scenario: karate.get('requestHeaders.Authorization[0]') == 'expected'
    

    【讨论】:

    • 嗨,彼得,非常感谢您的快速回复。这非常有效。再次感谢您!!!
    • @IsabelleT。没问题。我其实觉得headerContains()很有道理,所以下个版本看看能不能加:github.com/intuit/karate/issues/997
    • 我有一个后续问题。在第二种情况下,我需要验证传递的令牌是在第一种情况下创建的。我试过像这样传递它: karate.get('requestHeaders.Authorization[0]') == '#(token)' 或者像 karate.get('requestHeaders.Authorization[0]') == token,但是 token不会被它的价值所取代。关于如何做到这一点的任何想法?
    • @IsabelleT。每个Scenario 都非常独立。您可以尝试修改您在 Background 中初始化的“全局”变量,不,#(foo) 嵌入式表达式方法 not 适用于普通 JS - 如果需要明确,请提出另一个单独的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多