Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][Symfony][Symfony2]Call to member function getUser in UnitTest
szypi1989
post 4.09.2018, 08:38:45
Post #1





Grupa: Zarejestrowani
Postów: 207
Pomógł: 0
Dołączył: 7.09.2010

Ostrzeżenie: (0%)
-----


Witam . Próbuje przetestować jedną klasę . No ale wyskakuje mi błąd w testach. Nie twierdzę, że nie mam źle za modelowanej klasy ale Chciałbym wyjść z tego problemu a nie potrafię.
To jest konstruktor klasy PushSql:
  1. class PushSql {
  2.  
  3. protected $entityManager;
  4. private $requestStack;
  5. protected $user_active;
  6. protected $imagemd;
  7.  
  8. public function __construct(EntityManager $em, RequestStack $requestStack, ContainerInterface $container, ImageMd $imagemd) {
  9. $this->entityManager = $em;
  10. $this->requestStack = $requestStack;
  11. $this->user_active = $container->get('security.token_storage')->getToken()->getUser();
  12. $this->imagemd = $imagemd;
  13. }


A tutaj mam klasę testową:
  1. <?php
  2.  
  3. namespace Tests\AppBundle\Controller;
  4.  
  5. use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
  6. use Symfony\Component\DomCrawler\Crawler;
  7. use AppBundle\Service\Edit\Append\PushSql;
  8. use AppBundle\Service\Edit\Append\ImageMd;
  9. use Symfony\Component\BrowserKit\Cookie;
  10. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  11.  
  12. class PusqlSqlTest extends WebTestCase {
  13.  
  14. public $imagemd;
  15. public $request;
  16. public $pushsql;
  17. public $container;
  18. public $client;
  19.  
  20. public function testIsObject() {
  21. $client = static::createClient();
  22. $this->logIn();
  23. $this->pushsql = new PushSql($this->entityManager, $this->request, $this->container, $this->imagemd);
  24. }
  25.  
  26. public function setUp() {
  27. $this->client = static::createClient();
  28. $kernel = self::bootKernel();
  29. $this->entityManager = $kernel->getContainer()->get('doctrine')->getManager();
  30. $this->container = $kernel->getContainer();
  31. $this->request = $kernel->getContainer()->get('request_stack');
  32. $this->imagemd = new ImageMd($this->request);
  33. }
  34.  
  35. public function logIn() {
  36. $kernel = self::bootKernel();
  37. $session = $kernel->getContainer()->get('session');
  38. $userManager = $kernel->getContainer()->get('fos_user.user_manager');
  39. $user = $userManager->findUserByUsername('tester');
  40.  
  41. $userManager->updateUser($user);
  42. $firewall = 'main_firewall';
  43. $token = new UsernamePasswordToken($user, null, $firewall, array('ROLE_SUPER_ADMIN'));
  44.  
  45. $session->set('_security_' . $firewall, serialize($token));
  46. $session->save();
  47.  
  48. $cookie = new Cookie($session->getName(), $session->getId());
  49. $this->client->getCookieJar()->set($cookie);
  50. }
  51. }


No i niestety podczas tworzenia :
  1. $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 :
  1. $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...

Ten post edytował szypi1989 4.09.2018, 08:44:49
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 17:11