When I try to mock my MapStruct mapper during a @QuarkusTest like this:
@RegisterExtension
JUnit5Mockery mockery = new JUnit5Mockery() {
{
setImposteriser(ByteBuddyClassImposteriser.INSTANCE);
setThreadingPolicy(new Synchroniser());
}
};
MyMapper mockMyMapper = mockery.mock(MyMapper.class);
QuarkusMock.installMockForType(mockMyMapper, MyMapper.class);
I get this error:
java.lang.ClassCastException:
class com.example.MyMapper$jMock$yRbf640e
cannot be cast to class com.example.MyMapperImpl
(com.example.MyMapper$jMock$yRbf640e is in unnamed module of loader
org.jmock.internal.SearchingClassLoader @510bd87a;
com.example.MyMapperImpl
is in unnamed module of loader
io.quarkus.bootstrap.classloading.QuarkusClassLoader @1dbd580)
What am I doing wrong?
The MapStruct system created a MyMapperImpl implementation for you. You will have to mock that in stead:
Then all works nicely.