2013-05-20 28 views
0

我有一個使用對象列表的類。你會如何嘲笑這份名單?爲什麼?你是否嘲笑列表,以便在調用列表方法時返回模擬對象。或者,您是否使用模擬對象創建列表的實例?嘲笑列表或模擬對象列表

下面是一個粗略的代碼示例。因此,如果我嘲笑列表,我需要知道列表是如何使用的,併爲列表的方法設置正確的返回/期望值。或 與列表的模擬對象,我只需要設置與模擬對象的列表,並斷言每個模擬訂戶是'使用'。

我測試每個用戶都被調用,在我看來後一種方法是正確的,你有什麼看法?

public class Publisher { 

    private List<Subscriber> subscribers; 

    public void publish() { 
     // loop through subscribers 
    } 

} 

回答

3

嘲笑一個List模仿聽起來像跳鯊魚給我。我會說,返回一個嘲笑List應該是足夠的。

你沒有測試List實現 - 你知道的工作。用它。

+0

我同意,我遇到的博客和指南似乎使用列表時,給予嘲笑的例子,這似乎很差。 – wenic

+0

我不明白你的評論。返回List沒有任何問題。我不會嘲笑List,因爲那不是我正在測試的。我知道一個ArrayList工作正常。我可能想要返回一個包含模擬對象的List實現。該列表的用戶不需要知道或關心他們是嘲笑。 – duffymo

+0

我的意思是當他們展示如何使用模擬框架時,他們使用List作爲模擬對象作爲示例。 – wenic

1

當你想模擬是必需的:

  1. 指導一類的控制來執行預定義的行爲下(例如返回一個已知值,拋出一個預定義的除外)。
  2. 測試一個類以確保它執行了預期的行爲。

在你的情況下,你當然不想定義List來執行任何特殊的行爲,你也不想測試List類來按預期執行。所以你不應該創建一個模擬列表。

您的測試題目是訂閱者。所以你是對的,你需要一個訂閱者模擬列表。