我是单元测试和 PHPUnit 的新手。
我需要一个模拟,我有一个完全控制,实现ConfigurationInterface
接口。测试主体是ReportEventParamConverter
对象,测试必须检查我的对象与界面之间的交互。
ReportEventParamConverter
对象(这里简化):
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();
}
}
这就是我试图模拟界面的方式:
$cls = 'Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface';
$mock = $this->getMock($mockCls);
我需要模拟两种方法的返回值:getClass()
和getName()
. 例如:
$mock->expects($this->any())
->method('getClass')
->will($this->returnValue('Some\Other\Class'))
;
当我创建一个新的ReportEventParamConverter
测试supports()
方法时,我收到以下 PHPUnit 错误:
致命错误:调用未定义的方法 Mock_ConfigurationInterface_21e9dccf::getClass()。
$converter = new ReportEventParamConverter();
$this->assertFalse($converter->supports($mock));