【问题标题】:Karate Framework - Why Javascript function returns an array with NaN values?空手道框架 - 为什么 Javascript 函数返回具有 NaN 值的数组?
【发布时间】:2018-10-19 12:28:12
【问题描述】:

我在空手道场景中编写了 javascript 函数,该函数在参数中接收当前日期并获取日期、年份、月份并将它们添加到数组中。但是由于某些未知原因,我得到了 NaN 值。请看下面我一直在使用的空手道步骤。

    * def dateArr2 = []
    * def dateParse =
        """
            function(myOrderDate)
            {
              dateArr2.add(myOrderDate); // this is for test purpose

              var today = new Date(myOrderDate);
              var dd = today.getDate();     
              var mm = today.getMonth()+1; //January is 0!
              var yyyy = today.getFullYear();
              dateArr2.add(yyyy);
              dateArr2.add(mm);
              dateArr2.add(dd);               
            }
        """ 
   * def ongoingDateTime = "2018-10-19T11:53:39.8795965Z"
   * eval dateParse(ongoingDateTime)     

注意,如果我在js 执行环境(例如sublime-text)中执行,类似的javascript 代码对我有效。

【问题讨论】:

    标签: javascript sublimetext karate


    【解决方案1】:

    请保持简单并使用 Java。文档中有例子:https://github.com/intuit/karate#java-interop

    如果太麻烦,写JS实用函数。

    * def toDate =
        """
        function(s) {
          var SimpleDateFormat = Java.type('java.text.SimpleDateFormat');
          var sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
          return sdf.parse(s)           
        }
        """ 
    * def raw = "2018-10-19T11:53:39.8795965Z"
    * def date = toDate(raw)
    * print date.day, date.month, date.year
    

    只需查看java.util.Date 的 API,您现在就拥有了所有这些。

    【讨论】:

    • 出于某种原因,我使用了双引号,无论如何我已经用var today = new Date(myOrderDate) 更新了代码。你能复制我遇到的问题吗?对我来说还是一样,Nan 值正在返回。
    • 我正在使用 java,这对我有好处。我自己和其他同事决定尽可能少地使用 java,因为我们希望保持它简单易用,在某一阶段,我们希望每个人都可以使用我们的空手道框架,包括手动 QA 和其他人,并且编码最少,即说我们想坚持一种语言,那就是javascript。
    • @MKod 同意了。只是当涉及到 Date-s 时,它变得复杂并且不值得。
    猜你喜欢
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多