Как проверить порядок массива в каратэ - PullRequest
2 голосов
/ 06 июля 2019

Я хочу проверить, что массив, который я получаю от конечной точки, находится в определенном порядке, основываясь на поле в объекте, используя Каратэ . Например, у меня могут быть данные, которые выглядят так:

[
  { 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()

Хотя это, кажется, работает как ожидалось, это безобразно . Есть ли лучший способ проверить порядок массива?

1 Ответ

4 голосов
/ 06 июля 2019

Да! Это становится простым, если вы извлекаете только числа в массив - за кулисами просто Java List, поэтому вы можете применить к нему методы Collections:

* 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
...