Я пишу тест specs2, и мне нужно сравнить две даты:
import java.util.Date
val date1: Date = getDate1();
val date2: Date = getDate2();
date1 must beEqualToAnotherDate(date2, 1.second)
Такого сопоставителя beEqualToAnotherDate
нет, как я могу сделать то же самое в specs2 эффективно?
2 ответа
Если вам нужен индивидуальный сопоставитель, вы можете попробовать что-то вроде:
import java.util.Date
import org.specs2.matcher.{
Expectable,
Matcher,
MatchResult,
MatchersImplicits,
Specification
}
object MySpecs extends Specification with MatchersImplicits {
def beCloseInTimeTo(date: Date, timeDiff: Int) = new Matcher[Date] {
def apply[D <: Date](e: Expectable[D]) =
result((e.value.getTime - date.getTime) < timeDiff,
"Dates are nearly at the same time",
"Dates are different",
e)
}
dateA must beCloseInTimeTo(dateB, timeInMillis)
}
Вы можете использовать must beBetween :
val millis = date2.getTime()
date1.getTime() must beBetween(millis - 500, millis + 500)
Похожие вопросы
Новые вопросы
scala
Scala - это язык программирования общего назначения, в основном предназначенный для виртуальной машины Java. Разработанный для краткого, элегантного и безопасного для типов представления общих шаблонов программирования, он сочетает в себе как императивный, так и функциональный стили программирования. Его ключевые особенности: продвинутая система статического типа с выводом типа; типы функций; сопоставления с образцом ; неявные параметры и преобразования; перегрузка оператора; полная совместимость с Java; совпадение
mustEqual
?date1
иdate2
могут быть не равны, скажем, если дата1 равна2011-11-11 10:10:10 111
, а дата2 равна2011-11-11 10:10:10 888
, я все равно считаю, что они равны