2014-09-11 69 views
0

爲什麼在調用模擬方法之前,下面的測試會失敗,並顯示「調用太少」而不是實際發生在do方法中的異常?Spock交互測試優先於例外

有什麼方法可以改變這種行爲嗎?

@Test 
def "Should Create"() { 
    when: "We do stuff" 
    this.someStuff.do() 

    then: "Should not get exception" 
    notThrown(Exception) 

    and: "Should send mail" 
    1 * mailSession.send(_, _, _, _, _, _, _) 
} 
+0

太少的信息來診斷它。 – Opal 2014-09-11 09:35:03

回答

2

您已經發現了一個錯誤。請在http://issues.spockframework.org提交問題。

PS:代替notThrown(Exception),使用noExceptionThrown()更爲常見。代替1 * mailSession.send(_, _, _, _, _, _, _),使用1 * mailSession.send(*_)更爲常見。 @Test是對Spock沒有影響的JUnit註釋。

0

do()方法拋出異常的確切類型是什麼?

可能您可能想要使用noExceptionThrown() Spock方法而不是notThrown(Exception)

+0

現在還不確定,但我認爲異常的類型並不重要。事情是當拋出異常時,'mailSession.send'不會被調用,所以「then」和「and」兩個部分都是可應用的,但「應發送郵件」優先。如果我把「應發送郵件」檢查一下,「不應該得到異常」部分處理正確。 – 2014-09-11 19:26:02

+0

老實說,沒有足夠的細節可以說明。 – topr 2014-09-14 12:17:06