我想模拟类构造函数中所需的服务。我有一个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)
,则可行。但我想用它来定义我的变量:(
答案 0 :(得分:1)
问题是测试执行时的PHPUnit无法找到(或自动加载)您的MyService
类。
这意味着您可能会遇到与其他Mocking库相同的问题,因为它们都需要存在原始类来扫描它并创建模拟。
这是因为你需要告诉PHPUnit完全合格的类名。
将您的代码更改为$this->getMock("\Acme\Bundle\Service\MyService");
,它应该可以解决。
(还是,试试嘲弄。这是一个很好的图书馆)