首页 > 解决方案 > 空手道 DSL - 需要在 POST 请求中传递当前日期和过去日期作为参数

问题描述

我需要在空手道的 POST 请求中传递当前日期和过去日期。这就是我正在做的事情:

在后台我计算当前日期和过去日期 - 背景:

def todaysdate =
      """
      function(curdate){
        var currentDate = new Date();
        karate.log(currentDate);
        return currentDate;
      }
      """
    And def minus30date =
      """
      function(pasdate){
        var pastDate = new Date();
        pastDate.setDate(pastDate.getDate() - 30);
        karate.log(pastDate);
        return pastDate;
      }
      """

上面的代码在控制台中给了我这样的日期:

[Date 2020-07-20T16:18:15.369Z] 
[Date 2020-06-20T16:18:15.379Z] 

POST 请求位于场景大纲的示例部分中:

| Individual ID Request                                                                   |
| '{  "endDate": "2020-06-20T16:18:15.379Z",  "startDate": "2020-07-20T16:18:15.369Z"  }' |

如何在开始和结束日期的请求中使用返回变量?我尝试在请求中添加“#(pastDate)”之类的内容,但它不起作用。我尝试调用场景大纲中的函数并将它们分配给一个变量并在请求中使用它,但这也不起作用。

任何帮助,将不胜感激。

标签: cucumberkarate

解决方案


您的日期功能可以修改如下,

* def getDate =
"""
function(numberOfDays){
  var date = new Date();
  date.setDate(date.getDate() + (numberOfDays));
  return date.toString()
}
"""

之后,您可以使用如下参数调用该函数,

* def todaysdate = getDate(0)
* def minus30date = getDate(-30)
* def payload = {"startDate" : "#(todaysdate)", "endDate" : "#(minus30date)"}

或者

* def payload = {"startDate" : "#(getDate(0))", "endDate" : "#(getDate(-30))"}

推荐阅读