首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Karate.prevRequest.body提供的值为空值

Karate.prevRequest.body提供的值为空值
EN

Stack Overflow用户
提问于 2021-03-27 01:32:25
回答 1查看 94关注 0票数 1

您好,空手道社区希望您能帮助我解决这个问题,我正在尝试为我的测试案例创建一些证据,因为我工作的组织既不接受黄瓜也不接受空手道报告。

当我的javaScript函数使用空手道的karate.prevRequest.body功能时,问题就会发生,这会带来一个空值,但我已经在功能级别尝试过了,并且工作得很好,我真的不知道发生了什么,我希望有人知道我做错了什么。

这里是我从特性和javaScript得到的代码和响应。

从要素

代码语言:javascript
复制
     * def requestBody = karate.prevRequest.body
     * def requestString = new java.lang.String(requestBody, 'utf-8')
     * print requestString

响应

11:09:15.800 [ForkJoinPool-1-worker-3] INFO com.intuit.karate - [print] {"enrollmentTimeStamp":"2021-03-26T11:09:14","customer":{"customer":"2021032611306","fullName":"Elizabeth Chase Olsen"}}

同一功能下的javaScript

代码语言:javascript
复制
      And configure afterScenario =
      """
      function() {
            if( karate.prevRequest != null){
            var requestBody = new java.lang.String( karate.prevRequest.body , 'utf-8');
        }
            var requestMethod = karate.prevRequest.method;
            var requestHeaders = karate.prevRequest.headers;
            var request = requestMethod + "\n" +requestHeaders+ requestBody;
            karate.log(requestBody);
            var reportResults = Java.type('Features.reportResults').writeResultsToFilePretty(requestMethod, requestHeaders, requestBody, response, karate.info.scenarioName, karate.info.featureFileName);
      }
      """

响应:

代码语言:javascript
复制
11:09:16.040 [ForkJoinPool-1-worker-3] ERROR com.intuit.karate - javascript function call failed: java.lang.NullPointerException
11:09:16.043 [ForkJoinPool-1-worker-3] ERROR com.intuit.karate - failed function body: function() {
        if( karate.prevRequest != null){
        var requestBody = new java.lang.String( karate.prevRequest.body , 'utf-8');
    }
        var requestMethod = karate.prevRequest.method;
        var requestHeaders = karate.prevRequest.headers;
        var request = requestMethod + "\n" +requestHeaders+ requestBody;
    karate.log(requestBody);
        var reportResults = Java.type('Features.reportResults').writeResultsToFilePretty(requestMethod, requestHeaders, requestBody, response, karate.info.scenarioName, karate.info.featureFileName);
}
11:09:16.044 [ForkJoinPool-1-worker-3] WARN  com.intuit.karate - afterScenario hook failed: javascript function call failed: java.lang.NullPointerException
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-27 02:36:08

首先,请切换到1.0 -这很可能已经修复或工作得更好:https://github.com/intuit/karate/wiki/1.0-upgrade-guide

第二:如果您想要自定义报告,并且愿意深入研究Java代码,请参阅以下内容:https://stackoverflow.com/a/66773839/143475

第三,也许这将为您提供您的组织所要求的“证据”,但同样,您应该愿意执行一些自定义代码:https://twitter.com/KarateDSL/status/1338892932691070976

第四,有一种叫做RuntimeHook的东西是为高级用户设计的,所以如果你了解如何使用它,你可以获得空手道发出的每一个单独的HTTP请求的详细信息。

最后,如果上面的工作都没有完成,这意味着您应该为空手道贡献一些代码:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66821727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档