【问题标题】:Error when bodyPath() is used in creating a mock service使用 bodyPath() 创建模拟服务时出错
【发布时间】:2019-02-28 02:13:50
【问题描述】:

我的模拟场景如下。

场景:pathMatches('/tokenisationservice/TokenisationWS_1_3') && bodyPath('/Envelope/Body/getToken/GetTokenRequest/enterpriseID') == '1'

要嘲笑的网址-'http://localhost:8080/tokenisationservice/TokenisationWS_1_3'

请求 XML

<soapenv:Envelope blah blah blah>
   <soapenv:Header/>
   <soapenv:Body>
      <tok:getToken>
            <GetTokenRequest>
            <enterpriseID>1</enterpriseID>
            <merchantGroupID>1</merchantGroupID>
            <pan>1234567890123456</pan>
         </GetTokenRequest>
      </tok:getToken>
   </soapenv:Body>
</soapenv:Envelope>

运行独立的 karate-netty。这会产生以下错误,并且不会返回所需的响应。

15:53:19.159 [nioEventLoopGroup-3-3] 警告 com.intuit.karate - 场景匹配评估失败:javascript 评估失败:pathMatches('/tokenisationservice/TokenisationWS_1_3') && bodyPath('/Enve lope/Body/getToken/GetTokenRequest/enterpriseID') == '1'

【问题讨论】:

    标签: karate


    【解决方案1】:

    在您的模拟/功能中看起来像是一个错字。我试过了,它对我有用。另请注意,bodyPath() 仅在 Karate 0.8.0 中引入

    模拟:

    Scenario: pathMatches('/tokenisationservice/TokenisationWS_1_3') && bodyPath('/Envelope/Body/getToken/GetTokenRequest/enterpriseID') == '1'
      * print request
      * def response = { success: true }
    

    测试:

    * url karate.properties['mock.url']
    * path '/tokenisationservice/TokenisationWS_1_3'
    * request
    """
    <soapenv:Envelope>
       <soapenv:Header/>
       <soapenv:Body>
          <tok:getToken>
                <GetTokenRequest>
                <enterpriseID>1</enterpriseID>
                <merchantGroupID>1</merchantGroupID>
                <pan>1234567890123456</pan>
             </GetTokenRequest>
          </tok:getToken>
       </soapenv:Body>
    </soapenv:Envelope>
    """
    * method post
    * status 200
    * print response
    

    【讨论】:

    • 嗨,我从您的评论中复制了场景行,但仍然是同样的错误。有趣的是,如果我删除 Scenario 行中的 '&& bodyPath(....)' 部分并仅使用 pathMatches 运行它,则模拟在测试中会按预期工作。
    • @Sindhu - 是时候让我向您指出这个过程了,一切顺利:github.com/intuit/karate/wiki/How-to-Submit-an-Issue
    • 另一个观察 - 相同的语句在 maven 项目中没有任何问题,但在独立运行时失败。 Karate-netty-0.9.1 用作独立的 jar。 Maven 中也使用了相同的版本。我是否需要附加一个 Maven 项目才能在 Git 中创建问题?
    • @Sindhu karate-netty !?在这种情况下,使用您的项目结构上传一个 zip 文件 - 您可以省略 jar,但指定您从哪里获得它
    • 会的。但关心你对空手道网的表达。我不应该使用它吗?从这里得到它。 mvnrepository.com/artifact/com.intuit.karate/karate-netty/0.9.1.
    猜你喜欢
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2015-03-20
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多