2010-11-15 9 views
1

如何驗證Easymock集合中元素的數量?我正在測試的課程應該調用一個方法,傳入一組與n元素。現在,我匹配任何對象的名單:EasyMock:預計集合中元素的數量

mockFooSetReceiver.saveFooSet(eq(name), 
      (List<IFooSet>) anyObject()); 
    replay(mockFooSetReceiver); 

我想什麼來指定集合中元素的個數:

mockFooSetReceiver.saveFooSet(eq(name), 
      setOfNObject(100)); 
    replay(mockFooSetReceiver); 

或者更好的,匹配的元素該集:

mockFooSetReceiver.saveFooSet(eq(name), 
      setEq(ecpectedSet)); 
    replay(mockFooSetReceiver); 

我是否必須推出自己的匹配器,是否有一個內置的?或者有人有他們想分享的setOfNObjectsetEq匹配器?

回答

3

作爲集必須按照本合同實現equals(..):

比較指定對象與此組的相等性。返回 如果指定的對象也是一個集合,則兩個集合 具有相同的大小,並且該集合中包含的指定集合的​​每個成員爲 (或等同地,該集合中的每個成員都是 包含在指定集合中)。該定義確保 等於方法在 設置界面的不同實現之間正常工作。

一個簡單的EasyMock.eq(ecpectedSet)完成這項工作。

如果只是集合@紀堯姆的答案的大小是要走的路。

+0

謝謝,這很好。比我自己的匹配器容易得多。 – 2010-11-15 17:54:01

1

你必須設計自己的匹配,並在matches方法:

  1. 檢查
  2. 的參數個數投的設置參數的設置
  3. 檢查長度

對不起,我手邊沒有類似的匹配器。