Método indefinido no objeto falso implementando uma determinada interface no PHPUnit?
Eu sou novo no teste de unidade e no PHPUnit.
Eu preciso de um mock, em que eu tenho um controle total, implementandoConfigurationInterface
interface. O assunto do teste éReportEventParamConverter
objeto e teste devem verificar a interação entre meu objeto e a interface.
ReportEventParamConverter
objeto (aqui 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();
}
}
E esta é a maneira que eu estou tentando zombar da interface:
$cls = 'Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface';
$mock = $this->getMock($mockCls);
Eu preciso simular os valores retornados para dois métodos:getClass()
egetName()
. Por exemplo:
$mock->expects($this->any())
->method('getClass')
->will($this->returnValue('Some\Other\Class'))
;
Quando eu crio um novoReportEventParamConverter
e testesupports()
método, recebo o seguinte erro PHPUnit:
Erro fatal: Chame para o método indefinido Mock_ConfigurationInterface_21e9dccf :: getClass ().
$converter = new ReportEventParamConverter();
$this->assertFalse($converter->supports($mock));