Soy nuevo en pruebas unitarias y PHPUnit.Método no definido en el objeto simulado que implementa una interfaz determinada en PHPUnit?
Necesito un simulacro, en el que tengo un control total, implementando la interfaz ConfigurationInterface
. El sujeto de prueba es el objeto ReportEventParamConverter
y la prueba debe verificar la interacción entre mi objeto y la interfaz.
ReportEventParamConverter
objeto (en este caso 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 burlarse de la interfaz:
$cls = 'Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface';
$mock = $this->getMock($mockCls);
necesito para simular los valores devueltos para dos métodos: getClass()
y getName()
. Por ejemplo:
$mock->expects($this->any())
->method('getClass')
->will($this->returnValue('Some\Other\Class'))
;
cuando creo un nuevo método ReportEventParamConverter
y la prueba supports()
, me sale el siguiente error PHPUnit:
Fatal error: Call to undefined method Mock_ConfigurationInterface_21e9dccf::getClass().
$converter = new ReportEventParamConverter();
$this->assertFalse($converter->supports($mock));
¿El 'ParamConverterInterface' tiene el método' getClass() '? – hakre
@hakra ¿eso importa? – gremo
Responda la pregunta para agregar más información a su pregunta. Eso sería importante. Aparte de eso, sería mi primera suposición de por qué el simulacro no tiene esa función. Entonces algo de depuración básica. – hakre