gpt4 book ai didi

php - 在 PHPUnit 上使用方法中的类型提示创建接口(interface)的 Mock 对象失败

转载 作者:IT王子 更新时间:2023-10-29 00:07:42 24 4
gpt4 key购买 nike

我创建了以下界面:

<?php
interface Action
{
public function execute(\requests\Request $request, array $params);
}

然后我尝试使用 PHPUnit 3.4 创建此接口(interface)的 Mock 对象,但出现以下错误:

fatal error :Mock_Action_b389c0b1::execute() 的声明必须与 D:\Xampp\xampp\php\PEAR\PHPUnit\Framework\TestCase.php(1121) 中的 Action::execute() 兼容:eval ()' 代码在第 2 行

我查看了从 PHPUnit 获得的堆栈跟踪,发现它创建了一个实现接口(interface) Action 的 Mock 对象,但按以下方式创建了 execute 方法:

<?php
public function execute($request, array $params)

如您所见,PHPUnit 接管了数组类型提示,但忘记了\requests\Request。这显然会导致错误。有谁知道此错误的解决方法?

我也试过没有命名空间,但我仍然得到同样的错误。

最佳答案

可能有点晚了。

我遇到了同样的问题,结果提示类型未加载且不可加载。结果,PHP 的 ReflectionParameter 没有返回类名,PHPUnit 的 mock 生成器也不包含它。

如果您确保提示的类型已加载或可使用自动加载加载,它应该可以工作。

关于php - 在 PHPUnit 上使用方法中的类型提示创建接口(interface)的 Mock 对象失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2171405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com