如何使用Mockito的anyCollectionOf()

时间:2011-06-16 09:16:53

标签: generics mockito

这个帖子的回答建议使用anyCollectionOf()但是我无法让它工作 Mockito: Verifying with generic parameters

我有一个Generic Class,用于保存同一对象的两个“版本”以进行比较

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 ***/

...
}

现在在我的UnitTest中,以下代码“确实”有效......

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

...但是我很想知道如何使用anyCollectionOf()实现同样的目标?

1 个答案:

答案 0 :(得分:2)

使用仿制药有趣地使用Mockito。在这种情况下,我认为您可以使用anyListOf()的唯一方法是输入

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

不是传递类实例而是传递null。这不是文档说你使用anyListOf()的方式,但在这种特殊情况下它似乎有用。

问题是Java中的泛型类型擦除,这使得您无法区分

的实例
Class<ChangedV0<BookVO>> or
Class<ChangedV0>

在运行时期间,因此无法创建任何静态符合

的内容
Class<ChangedV0<BookVO>>