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%)
-----


Mam route 'app_main'
$router = static::getContainer()->get(UrlGeneratorInterface::class);
$this->assertResponseRedirects($router->generate('app_main'));

User jest bazie projektu, a że jest jedna baza to też jest w testowej! Chyba?

Dodaje dump($error) w kontrolerze SecurityController i odpalam test jeszcze raz,
otrzymuję null z dumpa i błąd... wcześniej wymieniony

Kontroler test
  1. class SecurityControllerTest extends AbstractIntegrationWebTestCase
  2. {
  3. public const TEST_USER_LOGIN = 'test@email.com';
  4. public const TEST_USER_PASSWORD = 'Test123';
  5.  
  6. public function testLogin(): void
  7. {
  8. $client = static::createClient();
  9. $crawler = $client->request('GET', '/login');
  10.  
  11. $formLogin = $crawler->selectButton('Login')->form();
  12.  
  13. $formLogin['email'] = self::TEST_USER_LOGIN;
  14. $formLogin['password'] = self::TEST_USER_PASSWORD;
  15. $client->submit($formLogin);
  16.  
  17. $router = static::getContainer()->get(UrlGeneratorInterface::class);
  18. $this->assertResponseRedirects($router->generate('app_main'));
  19. }
  20. }

Czy
$formLogin['email'] = self::TEST_USER_LOGIN;
$formLogin['password'] = self::TEST_USER_PASSWORD;
wystarcza, aby się zalogować, czy cos tu brakuje?
Sprawdzałem z np. dodatkowo
$formLogin['agreeTerms'] = true;
ale też daje ten sam błąd.
A token, a zakodowane hasło itp.?

Albo $formLogin = $crawler->selectButton('Login')->form() podpowiada, że powinno tu być value.
Czy dla takiego buttona: <button type="submit" id="submit" name="submit" class="btn btn-primary">Login</button> value to na pewno: Login?

Ten post edytował Malinaa 27.09.2023, 12:55:57
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: 17.10.2025 - 01:42