Mocking método getClass com PowerMockito

Eu gostaria de evitar zombar do método getClass () para uma classe, mas não consigo encontrar nenhuma maneira de contornar isso. Eu estou tentando testar uma classe que armazena tipos de classe de objetos em um HashMap para um método específico a ser usado posteriormente. Um breve exemplo disso é:

public class ClassToTest {
    /** Map that will be populated with objects during constructor */
    private Map<Class<?>, Method> map = new HashMap<Class<?>, Method>();

    ClassToTest() {
        /* Loop through methods in ClassToTest and if they return a boolean and 
           take in an InterfaceA parameter then add them to map */
    }

    public void testMethod(InterfaceA obj) {
        final Method method = map.get(obj.getClass());
        boolean ok;
        if (method != null) {
             ok = (Boolean) method.invoke(this, obj);
        }
        if (ok) {
            obj.run();
        }
    }

    public boolean isSafeClassA(final ClassA obj) {
        // Work out if safe to run and then return true/false
    }

    public boolean isSafeClassB(final ClassB obj) {
       // Work out if safe to run and then return true/fals 
    }

}

public interface InterfaceA {
   void run()
}

public class ClassA implements InterfaceA {
   public void run() {
      // implements method here
   }
}

public class ClassB implements InterfaceA {
    public void run() {
       // implements method here
    }
}

Eu então tenho um teste JUnit que parece um pouco com isso:

@RunWith(PowerMockRunner.class)
@PrepareForTest({ClassA.class})
public class ClassToTestTest {
    private final ClassToTest tester = new ClassToTest();

    @Test
    public void test() {
        MockGateway.MOCK_GET_CLASS_METHOD = true;
        final ClassA classA = spy(new ClassA());
        doReturn(ClassA.class).when(classA).getClass();
        MockGateway.MOCK_GET_CLASS_METHOD = false;

        tester.testMethod(classA);
        verify(classA).run();
    }
}

Meu problema é embora dentro do método test () classA.getClass (); retornará ClassA, uma vez dentro do método testMethod () do testador, ele ainda retorna a classe ClassA $ EnhancerByMockitoWithCGLIB $ ... e então meu objeto útil sempre será nulo.

Existe alguma maneira de eu sair por aí zombando da aula ou o que eu preciso fazer para consertar isso?

Desde já, obrigado.

questionAnswers(3)

yourAnswerToTheQuestion