我有一个巨大的json对象,我需要解析它,然后写一些测试,看看是否一切都按预期进行。
case class User(id: Identification, age:Int, name: String ...)
case class Identification(id: Int, hash: String ....)
... a lot more classes
现在我正在尝试编写测试
val json = parse(Source.fromFile(/path).getLines.mkString("\n"))
import org.json4s.DefaultFormats
implicit val formats = DefaultFormats
所以我的问题是如何测试案例类是否合适? 我想也许我应该尝试提取前。用户,然后按参数检查参数是否正确,但我不是一个好方法,因为创建json的不是我,所以我对内容不感兴趣。
由于
答案 0 :(得分:2)
这是我发现使用JSON和案例类超过测试的最小年份。
应该始终测试这三件事
val example = MyCaseClass()
read[MyCaseClass](write(example)) should Equal example
检查一个类是否可以转换为JSON,读回并仍然具有相同的值。这个比人们想象的更容易打破。
JSON String
- > CaseClasses
val exampleAsJSON : String
val exampleAsCaseClass : MyCaseClass
read(exampleAsJSON) shouldEqual exampleAsCaseClass
检查JSON是否仍然可以反序列化。
CaseClasses
- > JSON String
val exampleAsJSON : String
val exampleAsCaseClass : MyCaseClass
write(exampleAsCaseClass) shouldEqual exampleAsJSON
检查String / JSON表示是否保持稳定。这里很难保持数据的最新状态,而且通常一些不太好的空白变化会导致误报。
是否存在optional
个参数?如果是,所有测试都应该在有和没有可选参数的情况下完成。