繁体   English   中英

如何使用Scala中的json4s库测试为解析器创建的案例类是否正确?

[英]How to test if the case classes I have created for the parser are correct using json4s libraries in scala?

我有一个巨大的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的人不是我,所以我对内容不感兴趣。

谢谢

这就是我发现使用JSON和case类进行测试的最低限度。

这三件事应该经常测试

结合反序列化的序列化

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参数? 如果是,则应使用和不使用可选参数来进行所有测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM