2015-03-08 27 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