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