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._以获得类型错误。 –