¿Método indefinido en objeto simulado que implementa una interfaz dada en PHPUnit?

Soy nuevo en pruebas de unidad y PHPUnit.

Necesito un simulacro, sobre el que tengo un control total, implementandoConfigurationInterface interfaz. Sujeto de prueba esReportEventParamConverter El objeto y la prueba deben verificar la interacción entre mi objeto y la interfaz.

ReportEventParamConverter objeto (aquí simplificado):

class ReportEventParamConverter implements ParamConverterInterface
{
    /**
     * @param Request $request
     * @param ConfigurationInterface $configuration
     */
    function apply(Request $request, ConfigurationInterface $configuration)
    {
        $request->attributes->set($configuration->getName(), $reportEvent);
    }

    /**
     * @param ConfigurationInterface $configuration
     * @return bool
     */
    function supports(ConfigurationInterface $configuration)
    {
        return 'My\Namespaced\Class' === $configuration->getClass();
    }
}

Y esta es la forma en que estoy tratando de burlarme de la interfaz:

$cls = 'Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface';
$mock = $this->getMock($mockCls);

Necesito simular los valores devueltos para dos métodos:getClass() ygetName(). Por ejemplo:

$mock->expects($this->any())
    ->method('getClass')
    ->will($this->returnValue('Some\Other\Class'))
;

Cuando creo un nuevoReportEventParamConverter y pruebasupports() Método, obtengo el siguiente error de PHPUnit:

Error grave: llamada a un método no definido Mock_ConfigurationInterface_21e9dccf :: getClass ().

$converter = new ReportEventParamConverter();
$this->assertFalse($converter->supports($mock));

Respuestas a la pregunta(3)

Su respuesta a la pregunta