简体   繁体   English

Mockito.any()匹配泛型类型T的任何实例

[英]Mockito.any() to match any instance of generics type T

I'm trying to mock a void method to throw an exception every time. 我试图模拟一个void方法,每次都抛出一个异常。 The method takes a List<SomeClass> as an argument. 该方法将List<SomeClass>作为参数。 How to I pass its to Mockito.any() ? 如何将其传递给Mockito.any()

Mockito.doThrow(new Exception())
       .when(myClassInstanceSpy)
       .myVoidMethod(Mockito.any(List<SomeClass>.class)); // This fails!

Here's my class definition: 这是我的班级定义:

class MyClass {
    ... 
    public void myVoidMethod(List<SomeClass> scList) {
        // ...
    }
}

Try : 试试:

Mockito.doThrow(new Exception())
   .when(myClassInstanceSpy)
   .myVoidMethod(Mockito.anyListOf(SomeClass.class));

You can specify generics using explicit method types: 您可以使用显式方法类型指定泛型:

Mockito.doThrow(new Exception())
   .when(myClassInstanceSpy)
   .myVoidMethod(Mockito.<List<SomeClass>>any());

Or with the handler for List in particular: 或者特别是使用List的处理程序:

Mockito.doThrow(new Exception())
   .when(myClassInstanceSpy)
   .myVoidMethod(Mockito.anyListOf(SomeClass.class));

Java 8 allows for parameter type inference, so if you're using Java 8, this may work as well: Java 8允许参数类型推断,因此如果您使用的是Java 8,这可能也有效:

Mockito.doThrow(new Exception())
   .when(myClassInstanceSpy)
   .myVoidMethod(Mockito.any());

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM