我有一个案例类case class FOO
。并且想测试一种方法myMethod
,该方法在给定参数值FOO()
的情况下返回value1
。
我有一个类似myMethod(value1) should equal FOO
的测试。
测试失败,并显示FOO did not equal FOO()
。
FOO
和FOO()
有什么区别?
答案 0 :(得分:6)
case class Foo()
变成了等价的
class Foo() extends Product with Serializable {
// some methods
}
object Foo extends (() => Foo) with Serializable {
// some methods
}
因此Foo()
创建了Foo类的实例,而Foo
是对Foo伴随对象的引用。
但是,如果案例类Foo
没有参数,则应考虑将其设为 case对象。如果您不滥用内部可变状态的case类[1],那么所有Foo()
实例都应该是无法区分的。
[1]如果是,请考虑使用常规类。