如何在数组中“使用内部” ScalaTest?

问题描述

我有一个案例类,正在尝试测试类似的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更改为ListVectorArraySeq,则此代码将相同。