2015-10-17 39 views
0

在我的代碼,有:如何驗證傳遞給模擬函數的異常的類型?

def submitContent(getDocContent:() => String, callback: Try[Boolean] => Unit): Unit = { 
    // .... 
    callback(Failure(new InflightChangeTimeoutException(pendingChange))) 
} 

我想測試在某些情況下,callback將與一些InflightChangeTimeoutException一個Failure被調用,但我不」關心什麼異常的價值。

在我speces2測試,我tryied:

val callback = mock[Try[Boolean] => Unit] 

submitContent(() => "any-other", callback) 

there was one(callback).apply(===(Failure(any[InflightChangeTimeoutException]))) 

會給我一些錯誤,如:

The mock was not called as expected: 
Argument(s) are different! Wanted: 
function1.apply(
    'Failure(com.test.InflightChangeTimeoutException)' 

is not equal to 

'Failure(null)' 
); 

不知道是哪裏不對。如何解決它?

回答

1

any[A]是將作爲參數的匹配器註冊到模擬函數中作爲副作用的函數。但any[A]的返回值實際上是null

所以檢查回調的結果,正確的方法是:

there was one(callback).apply(beLike[Failure[Boolean]] { case Failure(t) => 
    t must beAnInstanceOf[InflightChangeTimeoutException] 
}) 
+0

非常感謝你所有的時間 – Freewind

相關問題