Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] Testowanie aplikacji
Malinaa
post
Post #1





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

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


Cześć,
chciałbym wykonać testowanie rejestracji i logowania w Symfony.

Symfony -> w katalogu tests/Controller/ utworzyłem plik SecurityControllerTest.php (test logowania),
gdzie chciałbym uzupełnic formularz danymi i zalogować użytkownika, następnie sprawdzić, czy jest zalogowany.

Napisałem taki kod, ale ciągle sypie errorami (coś tu rzeźbię)?

  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Tests\Controller;
  6.  
  7. use App\Repository\UserRepository;
  8. use App\Tests\Integration\AbstractIntegrationWebTestCase;
  9.  
  10. class SecurityControllerTest extends AbstractIntegrationWebTestCase
  11. {
  12. public const TEST_USER_LOGIN = 'test@domain.com';
  13. public const TEST_USER_PASSWORD = 'test123';
  14.  
  15. public function testLogin(): void
  16. {
  17. $client = static::createClient();
  18. $crawler = $client->request('GET', '/login');
  19.  
  20. // Uzupelnij formularz danymi i zaloguj
  21. $dataLogin = [
  22. 'email' => self::TEST_USER_LOGIN,
  23. 'password' => self::TEST_USER_PASSWORD,
  24. //'submit' => 'Login',
  25. ];
  26.  
  27. //$formLogin = $crawler->filter('form')->form();
  28. $formLogin = $crawler->selectButton('Login')->form();
  29.  
  30. //$formLogin['email']->setValue(self::TEST_USER_LOGIN);
  31. //$formLogin['password']->setValue(self::TEST_USER_PASSWORD);
  32. //$formLogin['submit']->setValue('Login');
  33. // OFF $formLogin['_csrf_token"'] = 'It is generated automatically!';
  34.  
  35. //$client->submit($formLogin, $dataLogin);
  36.  
  37. //dd($client->getRequest()->request);
  38.  
  39. // Sprawdz, czy zalogowany -> sprawdza tylko czy email jest w bazie (IMG:style_emoticons/default/questionmark.gif) ?
  40. $repositoryUser = static::getContainer()->get(UserRepository::class);
  41. $testUser = $repositoryUser->findOneBy(['email' => self::TEST_USER_LOGIN]);
  42. $client->loginUser($testUser);
  43.  
  44. //dd($testUser);
  45.  
  46. $this->assertResponseIsSuccessful();
  47. }
  48. }


Mam prośbę o pomoc w wykonaniu testowania.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Malinaa
post
Post #2





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

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


Cytat(VonSNAKE @ 20.09.2023, 23:57:24 ) *
A pokaż Twig i Kontroler dla routa /login?


Kontroler

<!--Geshi:502619:php--><pre class="php-brief" style="font-family:monospace;"><div class="head">
  1. [topic=0]oken"</span> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">"_csrf_token"</span> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">"97e..."</span> <span class="sy0">/</span>><<span class="sy0">/</span><span class="kw2">div</span>></span></div><li class="li2"><div class="de2"><span class="sc2"><<span class="sy0">/</span><span class="kw2">form</span>></span></div>
  2. [/list]<div class="foot">[HTML] [url="./Pobierz-Plik-502620.html"]plaintext[/url] </div></pre><!--/Geshi:502620:html-->
  3.  
  4.  
  5.  
  6. <!--quoteo(post=1261873:date=21.09.2023, 12:28:23 :name=jacek.e3)--><div class='quotetop'>Cytat(jacek.e3 @ 21.09.2023, 12:28:23 ) [snapback]1261873[/snapback]</div><div class='quotemain'><!--quotec-->Która wersja Symfony?<!--QuoteEnd--></div><!--QuoteEEnd-->
  7.  
  8.  
  9. Symfony w wersji 5.4
  10.  
  11. Przesłany kod już wcześniej sprawdzałem, ale wg. tego co napisałeś teraz jest tak:
  12.  
  13. [php]class SecurityControllerTest extends AbstractIntegrationWebTestCase
  14. {
  15. public const TEST_USER_LOGIN = 'test@email.com';
  16. public const TEST_USER_PASSWORD = 'Test123';
  17.  
  18. public function testLogin(): void
  19. {
  20. $client = static::createClient();
  21. $crawler = $client->request('GET', '/login');
  22.  
  23. $formLogin = $crawler->selectButton('Login')->form();
  24.  
  25. $formLogin['email'] = self::TEST_USER_LOGIN;
  26. $formLogin['password'] = self::TEST_USER_PASSWORD;
  27. $client->submit($formLogin);
  28.  
  29. $router = static::getContainer()->get(UrlGeneratorInterface::class);
  30. $this->assertResponseRedirects($router->generate('app_main'));
  31.  
  32. //dd($client->getResponse()->getContent());
  33. }
  34. }


i sypie błędem:

FAILURES!
Tests: 1, Assertions: 2, Failures: 1.


dd($client->getResponse()->getContent());
daje jakiś wynik przekierowania chyba z vendora

<body>
Redirecting to <a href="/login">/login</a>.\n
</body>

i za chiny ten $formLogin nie loguje usera z formularza logowania?

Ten post edytował Malinaa 25.09.2023, 14:31:10
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 02:48