1

我想模拟类构造函数中所需的服务。我有一个 PHPUnit 的例外: MyService 是必需的,给出了 Mock_MyService_0afc7fc1 。

但是对于 Request、EntityManager 或其他 Symfony 2 组件,我没有这个问题。

这是我的班级的构造:

use Acme\Bundle\Service\MyService;
use Symfony\Component\HttpFoundation\Request;

...

public function __construct(MyService $service, Request $request)
{

和我的模拟:

...

$service = $this->getMock('MyService');

$class = new Class($service, $request);

模拟我们自己的服务是不可能的?只有 Symfony 2 组件?

PS:如果我MyService这样删除:public function __construct($service, Request $request),这可行。但我想用它定义我的变量:(

4

1 回答 1

1

问题是测试执行时 PHPUnit 无法找到(或自动加载)您的MyService类。

这意味着您可能会遇到与其他 Mocking 库相同的问题,因为它们都需要存在原始类来扫描它并创建模拟。

发生这种情况是因为您需要告诉 PHPUnit 完全限定的类名。

将您的代码更改为$this->getMock("\Acme\Bundle\Service\MyService");,它应该可以解决。

(不过,试一试嘲讽。这是一个不错的图书馆)

于 2012-11-19T10:12:12.737 回答