2015-03-08 64 views
0

我有看起来像这样的代码来检测赋值中的NPE。分配触发该NPE发生的隐式转换(它含蓄地从CoreRecommendedDomain到APIRecommededDomain转换:Specs2:在隐式转换的val赋值中检测异常

"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到只测试任务一个变种我宁愿检测NPE,当我做这样的事情:

val r: APIRecommendedDomain = n 

我似乎无法找到如何做一个尝试包裹了整个事情的这个短/但是,这种有点击败了更优雅的语法,

还是我运气不好?

回答

0

您可以将类型分配给null直接,这应该触发隐式转换:

"ensure Scala RecommendedDomain from null must throw NPE" in { 
    ((null: CoreRecommendedDomain): APIRecommendedDomain) must throwA[NullPointerException] 
} 
+0

请问这个代码知道null是一个CoreRecommendedDomain使得它将触发隐式转换? – 2015-03-09 00:52:08

+0

对不起,我错过了一个类型注释。现在我也试过了,它可以工作:-)。 – Eric 2015-03-09 01:34:08