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]
}