¿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));