클래스 생성자에 필요한 서비스를 조롱하고 싶습니다. 나는 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);
그것은 우리 자신의 서비스를 조롱하는 것은 불가능? 심포니 2 구성 요소 만?
추신 : MyService
: public function __construct($service, Request $request)
을 삭제하면 작동합니다. 이
설정을 자동로드하는 경우, 전체 경로없이 작동합니다! – markus
답변 해 주셔서 감사합니다. +1 – rgazelot
@ markus-tharkun 그것은 "뭔가를 조롱하다"는 식으로 작동하지만 올바른 방법을 제공하지 못하며 동일한 수업을 연장 할 수 없습니다. PHPUnit은 클래스가 정의 된 네임 스페이스를 인식하지 못하고 정적 클래스 분석이 필요하기 때문에 테스트 클래스에서 사용 문을 해석하지 않습니다. https://wiki.php.net/rfc/class_name_scalars를 사용하면 긴 경로 대신에'MyService :: class'가 멋지게 보입니다. 하지만 지금은 대안을 알지 못합니다 :) (틀린 날에 뭔가 잘못 생각한 경우) – edorian