如何使用空手道测试数组响应中的每个日期字段 [英] How to test each date field in the array response using Karate

查看:48
本文介绍了如何使用空手道测试数组响应中的每个日期字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有类似{的数据:{a:[{date1:​​"2018-12-23",date2:"23-11-2018"},{date1:​​"2018-12-20",date2:"23-11-2018}]}}
并想测试每个date1字段是否小于今天的日期,并且每个date2小于输入日期字段(我在输入有效载荷中有一个日期字段).如何执行该操作.

i have response like { Data: {a: [{ date1: "2018-12-23", date2: "23-11-2018" },{ date1: "2018-12-20",date2: "23-11-2018" }] } }
and want to test if each date1 field is less than today's date and each date2 is less than input date field (i have a date field in input payload) How can i perform that.

推荐答案

在许多方面,这是一个.重构此代码以使其更整洁是您的功课:P

In many ways, here is one. Refactoring this code to be cleaner is homework for you :P

* def toTime1 =
    """
    function(s) {
      var SimpleDateFormat = Java.type('java.text.SimpleDateFormat');
      var sdf = new SimpleDateFormat("yyyy-MM-dd");
      return sdf.parse(s).time           
    }
    """
* def toTime2 =
    """
    function(s) {
      var SimpleDateFormat = Java.type('java.text.SimpleDateFormat');
      var sdf = new SimpleDateFormat("dd-MM-yyyy");
      return sdf.parse(s).time           
    }
    """  
* def input = toTime2("24-11-2018")
* def today = new java.util.Date().time
* def isValid1 = function(x){ return toTime1(x) < today  }
* def isValid2 = function(x){ return toTime2(x) < input  }

* def response = [{ date1: "2018-12-23", date2: "23-11-2018" }, { date1: "2018-12-20", date2: "23-11-2018" }]
* match each response == { date1: '#? isValid1(_)', date2: '#? isValid2(_)' }

这篇关于如何使用空手道测试数组响应中的每个日期字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆