相关疑难解决方法(0)

在PHPUnit中实现给定接口的模拟对象上的未定义方法?

我是单元测试和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();
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我试图模仿界面的方式:

$cls = 'Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface';
$mock = $this->getMock($mockCls);
Run Code Online (Sandbox Code Playgroud)

我需要模拟两种方法的返回值:getClass()getName().例如:

$mock->expects($this->any())
    ->method('getClass')
    ->will($this->returnValue('Some\Other\Class'))
;
Run Code Online (Sandbox Code Playgroud)

当我创建一个新的ReportEventParamConverter测试supports()方法时,我得到以下PHPUnit错误:

致命错误:调用未定义的方法Mock_ConfigurationInterface_21e9dccf :: getClass().

$converter = new ReportEventParamConverter();
$this->assertFalse($converter->supports($mock));
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing mocking symfony

19
推荐指数
2
解决办法
2万
查看次数

标签 统计

mocking ×1

php ×1

phpunit ×1

symfony ×1

unit-testing ×1