2012-06-19 49 views

回答

13

基本的區別是這樣的:你expect事情必須發生,stub事情可能發生。

有兩種方法模擬對象失敗:調用一個意外的/未打開的方法,或者未調用預期的方法。

  1. 意外的調用。當一個模擬對象接收到一條未被剔除或預期的消息時,它立即拋出異常,並且測試失敗。
  2. 預計調用。當你在你的模擬中調用verify(通常在你的測試結束時),它會檢查以確保你所期望的所有方法都被實際調用。如果有的話,你的測試將失敗。

有幾種類型的模擬改變了這種行爲:好的嘲笑和部分嘲弄。好的嘲笑可以防止你必須存根方法 - 基本上他們讓意想不到的調用發生。部分模擬是一種攔截髮送到實際對象的消息的方式。任何您期望或部分模擬存根的消息將被髮送到模擬對象。所有其他消息都發送到實際的對象。對於不錯的嘲笑和部分嘲諷,您不會在意外的調用(上面的規則#1)上得到測試失敗。

相關問題