Я делаю некоторые функциональные тесты с 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);
и, очевидно, в моей функции Teardown я просто:
protected function tearDown()
{
$this->client->restart();
unset($this->client, $this->objectFactory);
}
Так что моя проблема, когда я запустить тест я имею это сообщение:
Symfony \ Component \ DependencyInjection \ Exception \ InactiveScopeException: вы не можете создать службу («запрос») неактивной области («запрос»).
И я не могу найти способ решить эту проблему. У кого-то есть идея?
Моя версия Symfony является 2.2.1 и моя версия PHPUnit является 3.7.19
Если кто-то может помочь мне, я мог бы быть очень счастлив.
Прошу прощения, если мой английский не так хорош.
EDIT
Может быть, это может помочь кому-то, в службе я использовал это::
$request = $this->container->get('request');
Казалось бы, причина, почему работа dosen't, когда я удалить его, он Безразлично «Я говорю об ошибке, но они все еще не работают.
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