Karate.prevRequest.body 给出空值

Karate.prevRequest.body is giving null value

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

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

这是我从功能和 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在相同的特征下

      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);
      }
      """

回复:

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

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

其次:如果您想要自定义报告并愿意深入研究 Java 代码,请参阅:

第三,也许这会给你你的组织所要求的“证据”,但同样,你应该愿意做一些自定义代码:https://twitter.com/KarateDSL/status/1338892932691070976

第四,对于高级用户来说,有一个叫做 RuntimeHook 的东西,所以如果您了解如何使用它 - 您可以获得空手道发出的每个 HTTP 请求的详细信息。

最后,如果 none 以上工作意味着你应该为空手道贡献一些代码:)