To jest konstruktor klasy PushSql:
class PushSql { protected $entityManager; private $requestStack; protected $user_active; protected $imagemd; public function __construct(EntityManager $em, RequestStack $requestStack, ContainerInterface $container, ImageMd $imagemd) { $this->entityManager = $em; $this->requestStack = $requestStack; $this->user_active = $container->get('security.token_storage')->getToken()->getUser(); $this->imagemd = $imagemd; }
A tutaj mam klasę testową:
<?php namespace Tests\AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Component\DomCrawler\Crawler; use AppBundle\Service\Edit\Append\PushSql; use AppBundle\Service\Edit\Append\ImageMd; use Symfony\Component\BrowserKit\Cookie; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; class PusqlSqlTest extends WebTestCase { public $imagemd; public $request; public $pushsql; public $container; public $client; public function testIsObject() { $this->logIn(); $this->pushsql = new PushSql($this->entityManager, $this->request, $this->container, $this->imagemd); } public function setUp() { $kernel = self::bootKernel(); $this->entityManager = $kernel->getContainer()->get('doctrine')->getManager(); $this->container = $kernel->getContainer(); $this->request = $kernel->getContainer()->get('request_stack'); $this->imagemd = new ImageMd($this->request); } public function logIn() { $kernel = self::bootKernel(); $session = $kernel->getContainer()->get('session'); $userManager = $kernel->getContainer()->get('fos_user.user_manager'); $user = $userManager->findUserByUsername('tester'); $userManager->updateUser($user); $firewall = 'main_firewall'; $session->save(); $cookie = new Cookie($session->getName(), $session->getId()); $this->client->getCookieJar()->set($cookie); } }
No i niestety podczas tworzenia :
$this->pushsql = new PushSql($this->entityManager, $this->request, $this->container, $this->imagemd);
Wyskakuje mi błąd : Call to member function getUser.
Jak widać wyżej zasymulowałem utworzenie sesji z użytkownika ale niestety nic to nie dało.
Błąd wyskakuje gdy próbuje tutaj dostać obiektu User :
$this->user_active = $container->get('security.token_storage')->getToken()->getUser();
Wiem, że widocznie źle zamodelowałem tą klasę i nie może nie jest dobrą praktyką takie coś wstawianie do konstruktora ale może da się z tego jakoś wyjść?
Bo zasymulowanie sesji nie bardzo chyba pomogło...