2011-11-24 43 views
3

我正在使用Mockito進行單元測試,而且我遇到了一個有哈希集合的問題,我想驗證這些參數是否相同。驗證與Mockito收集<byte[]>的平等嗎?

即我有類似

Collection<byte[]> blobs = new ArrayList<byte[]>(); 

// Do some stuff, omitted for brevity 

verify(mockStore).setWhatever(eq(blobs)); 

這種失敗,因爲「的equals()」上的byte []的做了比較基準(這不是相同的)。

有沒有簡單的東西,我很想比較兩個byte []的集合?是否有我需要用於比較的特殊匹配器?通常我會使用Arrays.equal(),但我不知道如何告訴Mockito使用它來比較元素。建議?

回答

4

沒有deepEquals mockito匹配器。但是你可以編寫一個在一些測試助手,例如:

public static Collection<byte[]> sameHashes(Collection<byte[]> hashes) { 
    class CollectionOfHashesMatcher extends ArgumentMatcher<Collection<byte[]>> { 
     public boolean matches(Collection<byte[] actualListOfHashes) { /* ... */ }   
     public void describeTo(Description description) { /* ... */ }   
    }; 
    return argThat(new CollectionOfHashesMatcher(hashes)); 
} 

應該給soemthing像:

verify(mockStore).setWhatever(sameHashes(blobs)); 
+0

工作就像一個魅力。謝謝。 –