2011-06-16 56 views
2

在此線程的answewr),但是我不能讓它工作 Mockito: Verifying with generic parameters如何使用的Mockito的anyCollectionOf()使用anyCollectionOf(建議

我有一個通用類,使用抱着同一對象的兩個「版本」中的比較目的

public class ChangedVO<T> { 

private T before; 
private T after; 

/*** Constructors ***/ 

public ChangedVO() {} 

public ChangedVO(T before, T after) { 
    this.before = before; 
    this.after = after; 
} 

/*** Getters & setters ***/ 

... 
} 

現在在我的單元測試下面的代碼 「做」 的工作......

verify(emailService, never()).sendBookChangesEmail(Matchers.<List<ChangedVO<BookVO>>>any()); 

...但是我有興趣知道如何使用anyCollectionOf()實現同樣的功能?

回答

2

Mockito與仿製藥有趣的用途。我認爲你可以在這種情況下使用anyListOf()的唯一方法是通過鍵入

verify(emailService, never()).sendBookChangesEmail(anyListOf((Class<ChangedV0<BookV0>>) null)); 

而不是通過你傳遞空一個類的實例。這不是說文檔說你應該使用anyListOf(),但在這種特定的情況下,它似乎工作。

的問題是Java泛型類型擦除這使得你不能的

Class<ChangedV0<BookVO>> or 
Class<ChangedV0> 

實例之間運行時和分化,因此也沒有辦法,你可以創建任何靜態符合

Class<ChangedV0<BookVO>> 
+0

感謝您的反饋fiv。我比較喜歡你提出的解決方案。它讀得更好。 – Brad 2011-06-17 09:24:41