2013-12-13 38 views
0

我必須測試一個引發異常的func()。如何模擬一個有一些調用的異常

異常的構造是這樣的:

Exception(){ 
var a = ContextHolder.get("Domain"); 
setDomain(a); 
} 

現在當函數拋出異常我在做什麼:

try{ 
fun(); 
} 
catch(Exception e){ 

} 

但它表明了一個AssertionError意料之外調用get(」域「),這是在Exception構造函數內。

有什麼辦法來驗證異常。

+0

'var'做了什麼? –

+0

var只是一個數據類型,將其視爲字符串 – kapil

+0

我不會把任何複雜的代碼放在異常構造函數中。這肯定會導致問題..爲什麼你不在catch塊的域代碼呢? –

回答

0

您必須模擬contextHolder並期望contextHolder上的get("Domain")調用。在this link我回答了一個類似的問題,mayby可以使用它。

+0

是的,我必須模擬得到(「域」),但我會在哪裏做到這一點? – kapil

+0

我添加了一個鏈接到以前的答案。 –

+0

其實,我會說不嘲笑contextHolder會更好。問題似乎是contextHolder是一個模擬,它不需要。 –

-1

看起來像C#代碼,但其標記爲Java。請確認。 如果它的C#可以使用像Moq這樣的Mocking框架。此外,你將不得不重新考慮你的代碼來移除靜態函數調用 - 它們是不可測試的!

+0

沒有它的Java代碼 – kapil

+0

靜態函數調用是可測試的 –

+0

它看起來像Javascript。什麼是'var'?這是Java中的新東西嗎? –

相關問題