Scenario: Testing date
Given url
When method get
Then status 200
And def releaseDate = response.meta.event.releaseDate
And print "Release Data is: ", releaseDate
* def today =
"""
function() {
var SimpleDateFormat = Java.type('java.text.SimpleDateFormat');
var sdf = new SimpleDateFormat('MMM dd, yyyy');
return sdf.format(new java.util.Date());
}
"""
* print today()
* def today = today()
* eval diff = today- releaseDate
And print "Difference is: ", diff
And assert diff >= 14
* def datediff =
"""
function(first, second) {
return Math.round((second - first) / (1000 * 60 * 60 * 24));
}
"""
* eval diff = datediff(today, releaseDate)
Получение следующего
16:16:02.894 [основная] ИНФОРМАЦИЯ com.intuit.karate - [печать] Дата выпуска: 15 августа 2002 г. 16:16:02.965 [основная] ИНФОРМАЦИЯ com.intuit.karate - [печать] 08 декабря 2022 г. 16:16:02.974 [основная] ИНФОРМАЦИЯ com.intuit.karate - [распечатать] Сегодняшняя дата: 08 декабря 2022 г. 16:16:03.044 [основная] ИНФОРМАЦИЯ com.intuit.karate - [печать] Разница: NaN
Вот решение, которое должно ответить на все ваши вопросы. Возможны улучшения, но я оставлю это вам в качестве домашнего задания.
* def toDate =
"""
function(date) {
var Formatter = Java.type("java.time.format.DateTimeFormatter");
var LocalDate = Java.type("java.time.LocalDate");
var dtf = Formatter.ofPattern("yyyy-MM-dd");
return LocalDate.parse(date, dtf);
}
"""
* def dateMinus =
"""
function(dateString, days) {
var date = toDate(dateString);
return date.minusDays(days);
}
"""
* def formatDate =
"""
function(date) {
var Formatter = Java.type("java.time.format.DateTimeFormatter");
var LocalDate = Java.type("java.time.LocalDate");
var dtf = Formatter.ofPattern("yyyy-MM-dd");
return dtf.format(date);
}
"""
* def beforeDate = '2022-12-08'
* def afterDate = dateMinus(beforeDate, 5)
* def afterDateString = formatDate(afterDate)
* match afterDateString == '2022-12-03'
Если у вас есть дополнительные вопросы, обратитесь к Java LocalDate API.