Karate 如何在空手道中测试数组的顺序

Karate 如何在空手道中测试数组的顺序,karate,Karate,我想测试从端点返回的数组是否按照特定顺序,基于对象中的字段,使用。例如,我可能有如下数据: [ { seconds: 20 }, { seconds: 15 }, { seconds: 12 } ] 我的目标是测试对象是否按降序列出 我成功地实现了这个测试,但如果可能的话,我正在寻找更好的方法。以下是我测试订单的步骤: * def orderTest = function() { for(var i = 0; i < response.length; i++) { if(i

我想测试从端点返回的数组是否按照特定顺序,基于对象中的字段,使用。例如,我可能有如下数据:

[
  { seconds: 20 },
  { seconds: 15 },
  { seconds: 12 }
]
我的目标是测试对象是否按降序列出

我成功地实现了这个测试,但如果可能的话,我正在寻找更好的方法。以下是我测试订单的步骤:

* def orderTest = function() { for(var i = 0; i < response.length; i++) { if(i !== 0 && response[i].seconds > response[i-1].seconds) return false; } return true; }
Then assert orderTest()
*def orderTest=function(){for(var i=0;iresponse[i-1].seconds)返回false;}返回true;}
然后断言orderTest()

虽然这似乎像预期的那样起作用,但它是丑陋的。是否有更好的方法来测试阵列的顺序?

是!如果您将数字单独提取到一个数组中,它就变得简单了,而数组在幕后只是一个Java
列表
,因此您可以对其应用
集合
方法:

* def Collections = Java.type('java.util.Collections')
* def response = 
"""
[
  { seconds: 20 },
  { seconds: 15 },
  { seconds: 12 }
]
"""
* def before = $response[*].seconds
* copy after = before
* Collections.sort(after, Collections.reverseOrder())
* match before == after

Hi@Peter Thomas此逻辑对具有浮点值的数组如何工作?例如,[0.565345345,0.3432432,1,0.8765465456,0.565435433]@vdrulerz应该工作。如果没有,请执行以下过程: