Я только начал использовать ScalaTest и я использую следующие для сравнения двух двойников в моей спецификации следующим образом:Обработка Парный в ScalaTest
it should "calculate the price" in {
val x = new X(10,10,12,1000)
assert(x.price() === 185.92)
}
Спецификация проходит, хотя я поставил в неверном значении 185.92 для сравнения с тем, что возвращает функция цены (что фактически возвращает 10.23 для вышеприведенного случая). У меня есть другие спецификации, где я просто сравниваю Ints
, и они работают должным образом. Но те, которые связаны с Doubles
, проходят независимо. Есть ли другие функции, кроме assert
Я должен использовать для сравнения Doubles
?
EDIT:
def price() : Double
Не ваш актуальный вопрос, но вы не должны использовать 'Double' (или любой тип с плавающей точкой), чтобы представить цену. Вместо этого используйте 'BigDecimal' или тип Spire - тип, который может выполнять точную десятичную арифметику. – lmm
Да, я буду использовать Spire, но сейчас я просто экспериментирую с ScalaTest. –
Моя первая теория заключается в том, что x.price() возвращает тип, который считает, что этот экземпляр равен Double 185.92. Можете ли вы показать, какой тип x.price() возвращается? Кроме того, вы можете смешивать в org.scalactic.TypeCheckedEquality или импортировать org.scalactic.TypeCheckedEquality._, чтобы получить ошибку типа, если типы не совпадают. –