Sono nuovo al test delle unità e PHPUnit.Metodo non definito sull'oggetto mock che implementa una determinata interfaccia in PHPUnit?
Ho bisogno di una simulazione, su cui ho il controllo completo, che implementa l'interfaccia ConfigurationInterface
. L'oggetto del test è l'oggetto ReportEventParamConverter
e il test deve verificare l'interazione tra il mio oggetto e l'interfaccia.
ReportEventParamConverter
oggetto (qui semplificata):
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 questo è il modo in cui sto cercando di deridere l'interfaccia:
$cls = 'Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface';
$mock = $this->getMock($mockCls);
ho bisogno di simulare i valori restituiti per due metodi: getClass()
e getName()
. Per esempio:
$mock->expects($this->any())
->method('getClass')
->will($this->returnValue('Some\Other\Class'))
;
quando creo un nuovo metodo di ReportEventParamConverter
e di prova supports()
, ottengo il seguente errore PHPUnit:
Fatal error: Call to undefined method Mock_ConfigurationInterface_21e9dccf::getClass().
$converter = new ReportEventParamConverter();
$this->assertFalse($converter->supports($mock));
Il parametro "ParamConverterInterface" ha il metodo 'getClass()'? – hakre
@hakra importa? – gremo
Rispondi alla domanda per aggiungere ulteriori informazioni alla tua domanda. Ciò avrebbe importanza. A parte questo, sarebbe la mia prima ipotesi sul perché la simulazione non abbia quella funzione. Quindi alcuni debug di base. – hakre