【问题标题】:Mockito method parameter matcher with generic in javajava中具有泛型的Mockito方法参数匹配器
【发布时间】:2016-07-25 05:47:57
【问题描述】:

我的实际方法签名是:

public List<T> readFileToMemory(FooFile fooFile, **Class<T> entityClass**) { }

我试图将其模拟为:

when(mockObject.readFileToMemory(any(FooFile.class), 
         Matchers.any(Class<Bar>)).thenReturn(new ArrayList<Bar>())

但第二个参数无法编译。如何解决?

我参考了以下答案,但仍然没有运气。

Mockito: List Matchers with generics

Mockito: Verifying with generic parameters

【问题讨论】:

    标签: java unit-testing generics mockito


    【解决方案1】:

    哦,我把它改成了:

    when(mockObject.readFileToMemory(any(FooFile.class), 
                                     Matchers.<Class<Bar>>any())).thenReturn(new ArrayList<Bar>())
    

    【讨论】:

    • 只是给其他刚刚发现此内容的人的注释:Matchers 现在已弃用,取而代之的是 ArgumentMatchers
    【解决方案2】:

    您也可以使用它:

    when(mockObject.readFileToMemory(any(FooFile.class), eq(Bar.class)))
                                    .thenReturn(new ArrayList<Bar>());
    

    【讨论】:

    • 不,这会引发错误为“错误的第二个参数类型,必需:java.lang.Class
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多