4
處理雙打
我剛開始使用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
?
編輯:
def price() : Double
而不是實際的問題,但你不應該使用'Double'(或任何浮點型)來表示的價格。改用'BigDecimal'或Spire類型 - 無論如何可以執行精確的十進制算術的類型。 – lmm
是的,我將使用Spire,但我現在只是在嘗試ScalaTest。 –
我的第一個理論是,x.price()返回一個類型,認爲這個實例等於雙185.92。你可以顯示什麼類型的x.price()返回?此外,如果類型不匹配,則可以混合使用org.scalactic.TypeCheckedEquality或導入org.scalactic.TypeCheckedEquality._以獲得類型錯誤。 –