Home > Enterprise >  Mockito "cannot select from parameterized type" issue
Mockito "cannot select from parameterized type" issue

Time:03-16

I'm trying to mock for testing purpose:

ClassA classA = Mockito.mock(ClassA.class);

Mockito.when(classA.void(Mockito.any(ClassB<String, ClassC>.class), Mockito.any(ClassD.class))).thenReturn("passed");

but I have info on "ClassB<String, ClassC>": cannot select from parameterized type.

ClassA void: ClassA.void(@NotNull ClassB<String, ClassC> classB, ClassD classD){...}

mockito-core-4.0.0, springboot, maven

Any idea how to solve it?

CodePudding user response:

Okay,Here is what you need to do in Order to Solve your problem.

First replace this line:ClassA classA = Mockito.mock(ClassA.class); With

@MockBean
private Class classA;

As a class level variable. After that you need to change your following piece of code:

ClassB<String, ClassC>.class

To

ClassB<Mockito.anyString(), Mockito.any(ClassC.class)>.class

Hopefully this will solve your problem. Please accept if it works.

CodePudding user response:

Because this is a "void" that returns nothing, it is impossible for it to return a String value. Solution is: Mockito.doThrow(new Exception("Error occurred")).when(classA).void(Mockito.any(ClassB.class), Mockito.any(ClassD.class)); and then classA.void(Mockito.any(ClassB.class), Mockito.any(ClassD.class)); ..... 'voidName' is a void method and it cannot be stubbed with a return value! Voids are usually stubbed with Throwables: doThrow(exception).when(mock).someVoidMethod(); If you need to set the void method to do nothing you can use: doNothing().when(mock).someVoidMethod();

  • Related