Symfony 2 및 phpunit으로 기능 테스트를합니다.유닛 테스트에서 Symfony 2 서비스 오류가 발생했습니다.
하지만 서비스에 약간의 문제가 있습니다. 설명해 드리겠습니다. 테스트를 진행하는 동안 응용 프로그램에서 사용하는 일부 서비스를 사용하고 싶습니다. 그래서 커널을 설정하는 내 설정 기능을 설정 juste :
static::$kernel = static::createKernel();
static::$kernel->boot();
$this->objectFactory = static::$kernel->getContainer()->get('some.application.objectfactory');
그래서 나는이를했습니다 내 기능에 나는 그
$var = $this->objectFactory->getObject($id);
처럼 내 서비스를 호출 할 수 있도록 객체를 반환하는 서비스를 사용합니다
분명히 내 해체 기능에 난 단지 :
protected function tearDown()
{
$this->client->restart();
unset($this->client, $this->objectFactory);
}
그래서 내가 테스트를 실행할 때 나는이 메시지했습니다 내 문제 :
를Symfony \ Component \ DependencyInjection \ Exception \ InactiveScopeException : 비활성 범위 ("요청")의 서비스 ("요청")를 만들 수 없습니다.
그리고이 문제를 해결할 방법을 찾을 수 없습니다. 누군가 어떤 아이디어가 있었습니까 ??
심포니의 나의 버전은 2.2.1이며 phpunit을 내 버전은 누군가가 나를 도울 수 있다면 3.7.19
, 나는 매우 행복이 될 수있다.
영어가 유창하지 않은 경우 유감입니다. :
이 작품을 나던 이유 것으로 보인다 $request = $this->container->get('request');
은, 내가 그것을 제거 할 때, 그것은 아무튼 :
은 누군가를 도울 수 어쩌면
, 서비스에 그 사용 EDIT 오류를 말하지 않지만 여전히 작동하지 않습니다.
편집
@Cyprian 에 따르면 당신은 내가 원하는 것을 바꿀 수 있습니다. 그래서 난 그냥 내가 원하는 기능, 클라이언트 (클라이언트 웹 테스트 케이스)에, 내 서비스에 추가 한 다음 함수 내에서 난 그냥이 추가 : 내가 전화를 어디에 내 기능에 따라서
if (isset($client)) {
$request = $client->getRequest();
} else {
$request = $this->container->get('request');
}
을
public function getObject($id)
{
//Get the service from the kernel
$service = static::$kernel->getContainer()->get('service');
$object = $service->getObject($id, $this->client);
}
과 당신의 생각은 나를 위해 작동하지 않습니다이
@nifr 처럼 잘 작동하지만 난 당신의 생각, 그들은 그냥 작품 잘못이 아니었다 생각 : 서비스 난 그냥이했습니다 내 경우에
당신의 도움에 대한개그러나 덕분에, 나는 지금 작동 행복 해요, 나는 해당 게시물은
어떤 업데이트로 아이디어에 따르면, 저에게 효과적입니다. – Babou34090