是否有可能嘲笑我们自己的服务?

时间:2012-11-16 15:08:59

标签: symfony mocking phpunit

我想模拟类构造函数中所需的服务。我有一个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),则可行。但我想用它来定义我的变量:(

1 个答案:

答案 0 :(得分:1)

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

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

这是因为你需要告诉PHPUnit完全合格的类名。

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

(还是,试试嘲弄。这是一个很好的图书馆)