Один из моих сервисов зависит от значения HTTP_HOST в объекте currentRequest из requestStack. Когда этот сервис используется в функциональном тесте, он работает, потому что я создаю клиент с параметром host:
$client = static::createClient(array(), array(
'HTTP_HOST' => 'test.' . $this->domain
));
В какой-то момент мне нужно получить службу из контейнера, который зависит от запроса, поэтому я подумал, что использовал клиент, созданный со значением хоста, для получения службы:
$client->getKernel()->getContainer()->get('service')->someMethod();
Но объект запроса больше не устанавливается при вызове конструктора этой службы.
Можно ли каким-либо образом использовать эту службу в тестовой функции с зависимостью от объекта запроса?
Связанный код:
ControllerTest.php
//Create client with HTTP_HOST
$client = static::createClient(array(), array(
'HTTP_HOST' => 'test.' . $this->domain
));
//Do some request services depending on the request object work because the client is initiated with the HTTP_HOST value
$crawler = $client->request('GET', $redirectUrl);
$this->assertEquals(
1,
$crawler->filter('html:contains("feedback")')->count()
);
//Now I want to check if email feedback is send. This process starts in a EventSubsriber
//I have to trigger this event myself because the $event variable consist of fake data.
$client->getContainer()->get('event_subscriber')->process($event);
//now collect the mail and do some checks
$mailCollector = $client->getProfile()->getCollector('swiftmailer');
$this->assertEquals(1, $mailCollector->getMessageCount());