我创建了以下界面:
<?php
interface Action
{
public function execute(\requests\Request $request, array $params);
}
然后我尝试使用PHPUnit 3.4创建此接口的Mock对象,但是我收到以下错误:
致命错误:Mock_Action_b389c0b1 :: execute()的声明必须与D:\ Xampp \ xampp \ php \ PEAR \ PHPUnit \ Framework \ TestCase.php(1121)中的Action :: execute()的声明兼容:eval ()第2行的代码
我查看了从PHPUnit获得的堆栈跟踪,发现它创建了一个实现接口Action的Mock对象,但是以下列方式创建了execute方法:
<?php
public function execute($request, array $params)
正如您所看到的,PHPUnit接管了数组类型提示,但忘记了\ requests \ Request。这显然会导致错误。有没有人知道这个错误的解决方法?
我也尝试过没有命名空间,但我仍然得到同样的错误。
答案 0 :(得分:25)
也许有点晚了。
我有完全相同的问题,结果是暗示的类型没有加载而且无法加载。因此,PHP的ReflectionParameter不返回类名,PHPUnit的模拟生成器不包含它。
如果您确保使用自动加载功能加载或加载提示类型,它应该可以正常工作。