问题描述
我有一个案例类,正在尝试测试类似的to this。变化将是这样的...
case class Record(names: Array[Name] ...)
我是Scala的新手,不确定在语法上如何工作
解决方法
请考虑以下代码:
case class Name(first: String,middle: String,last: String)
case class Record(names: Array[Name])
val rec = Record(
Array(Name("Sally","Anna","Jones"),Name("Sally1","Anna1","Jones1"))
)
inside (rec) { case Record(nameArray) =>
inside (nameArray) { case Array(name,name1) =>
inside(name) {
case Name(first,middle,last) =>
first should be("Sally")
middle should be("Anna")
last should be("Jones")
}
inside(name1) {
case Name(first,last) =>
first should be("Sally1")
middle should be("Anna1")
last should be("Jones1")
}
}
}
请注意,如果case Array(name,name1)
上的名称数目与实际数目不同,则测试将失败。
正如Luis在评论中提到的,不建议在case类中使用Arrays。如果将Array
更改为List
,Vector
或ArraySeq
,则此代码将相同。