Specs2:检测隐式转换的 val 赋值中的异常
Specs2: detect exception in implicitly-converted val assignment
我有类似这样的代码,用于检测作业中的 NPE。赋值触发隐式转换,其中发生 NPE(它从 CoreRecommendedDomain 隐式转换为 APIRecommededDomain:
"ensure Scala RecommendedDomain from null must throw NPE" in {
val n: CoreRecommendedDomain = null
var r: APIRecommendedDomain = APIRecommendedDomain("example.com")
(r = n) must throwA[NullPointerException]
}
以上代码有效。但是,当然,我宁愿不必将虚拟 APIRecommendedDomain 创建到 var 中只是为了测试分配。当我做类似的事情时,我更愿意检测 NPE:
val r: APIRecommendedDomain = n
除了将整个内容包装在 try/catch 中,我似乎无法找到如何做到这一点。不过,这有点打败了更优雅的语法。
还是我运气不好?
你可以直接给null
分配一个类型,这应该会触发隐式转换:
"ensure Scala RecommendedDomain from null must throw NPE" in {
((null: CoreRecommendedDomain): APIRecommendedDomain) must throwA[NullPointerException]
}
我有类似这样的代码,用于检测作业中的 NPE。赋值触发隐式转换,其中发生 NPE(它从 CoreRecommendedDomain 隐式转换为 APIRecommededDomain:
"ensure Scala RecommendedDomain from null must throw NPE" in {
val n: CoreRecommendedDomain = null
var r: APIRecommendedDomain = APIRecommendedDomain("example.com")
(r = n) must throwA[NullPointerException]
}
以上代码有效。但是,当然,我宁愿不必将虚拟 APIRecommendedDomain 创建到 var 中只是为了测试分配。当我做类似的事情时,我更愿意检测 NPE:
val r: APIRecommendedDomain = n
除了将整个内容包装在 try/catch 中,我似乎无法找到如何做到这一点。不过,这有点打败了更优雅的语法。
还是我运气不好?
你可以直接给null
分配一个类型,这应该会触发隐式转换:
"ensure Scala RecommendedDomain from null must throw NPE" in {
((null: CoreRecommendedDomain): APIRecommendedDomain) must throwA[NullPointerException]
}