我正在使用Scala中的库lift json将一些json配置反序列化为我的Config
Case类。对于反序列化,我有一个名为Parser
的类。它具有一个get方法,该方法尝试反序列化配置,如果成功,则返回scala.util.Success(Config)
,否则返回scala.util.Failure
。我的问题是为Parser类编写单元测试的正确方法是什么?
isFailure
和isSuccess
吗?isFailure
,isSuccess
,如果isSuccess
也声明该反序列化配置,则我手工创建的是一样的吗?答案 0 :(得分:2)
第一种方法显然是不够的:它可以通过所有测试,同时为Config
提供错误的字段。
因此您需要第二个,但是当然只有有效的配置才存在Config,并且分别使用isEqual(Success(expectedConfig))
而不是isSuccess
和isEqual
会更简单(也许提取它的方法)。或者,如果您使用ScalaTest,请consider TryValues
。
这也是进行属性测试的一个很好的用例(ScalaCheck是最常见的Scala库):如果您还有序列化方法,请生成任意配置并进行测试
fromJson(config.toJson) == Success(config)