Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Frameworki _ [SF2][Symfony][Symfony2]tworzenie pola request file w testach?

Napisany przez: symer 10.10.2018, 12:54:11

Witam. Jak za symulować w testach wysyłanie request? chodzi mi o dane pola file jak zasymilować . Oraz także GET.

  1. $client = http://www.php.net/static::createClient();
  2. $client->request('GET', $url);

Na forach pisze, że tak można zasymlować GET ale FILE niestety nie wiem. Może mi ktoś pomóc

Napisany przez: Pyton_000 10.10.2018, 13:11:04

https://stackoverflow.com/questions/6916989/testing-file-uploads-in-symfony2

Napisany przez: symer 11.10.2018, 08:23:51

Niestety słabo. Nic nie chodzi.
próbuje tak :

  1. $this->client = http://www.php.net/static::createClient();
  2. $photo = http://www.php.net/array(
  3. 'data' => $this->_createUploadedFile()
  4. );
  5. $this->client->request(
  6. 'POST',
  7. $this->client->getContainer()->get('router')->generate(
  8. 'edit_add', http://www.php.net/array('id_add' => '1')
  9. ),
  10. http://www.php.net/array('name' => 'Fabien'),
  11. http://www.php.net/array('photo' => $photo )
  12. );


tutaj funkcja _createUploadedFile:
  1. public function _createUploadedFile() {
  2. return new UploadedFile(
  3. 'C:\xampp\htdocs\heroku\my_project_test\web\images\1.jpg', 'photo.jpg', 'image/jpeg', null
  4. );
  5. }


No i nie przesyła mi tego pliku :-(

Napisany przez: Pyton_000 11.10.2018, 12:09:25

Chodzi chodzi tylo Ty źle załączyłeś plik. Mam wrażenie że nie wiesz co robisz. Zrobiłeś Copy&paste bez zrozumienie tego co się dzieje.

https://symfony.com/doc/current/testing.html#testing-request-method-sidebar zobacz jak wyglądają parametry metory request

Napisany przez: symer 11.10.2018, 12:25:58

No dobra z tym akurat nie ma problemu. Już sobie poradziłem . Tylko jak wysłać tego clienta questionmark.gif?
ponieważ gdy robię client->request to nie wysyłam tego.
Ponieważ próbuje to odebrać i niczego nie dostaje. Chyba, że coś źle robię.
No ale gdy próbuje użyć var_dump($_POST) aby odebrać dane to niczego nie mam tak jakby nigdzie nie wysłał tych informacji. Mam nadzieje, że dobrze to wyjaśniłem.
PO prostu :

  1. $this->client = http://www.php.net/static::createClient();
  2. $paramsArray = http://www.php.net/array();
  3. $this->client->request(
  4. 'POST',
  5. $this->client->getContainer()->get('router')->generate(
  6. 'edit_add', http://www.php.net/array('id_add' => '1')
  7. ),
  8. $paramsArray,
  9. http://www.php.net/array(
  10. 'data' => $this->_createUploadedFile()
  11. ),
  12. http://www.php.net/array(
  13. 'Content-Type' => 'multipart/formdata'
  14. )
  15. );

Wysyłam dane i próbuje teraz odebrać te pole FILE i nie wiem właśnie jak.:
Gdy dla testu robię takie coś:
var_dump($_POST) to tablica jest pusta.
Może mi pomożesz jak to wyciągnąćquestionmark.gif? Tylko o to mi chodzi . Z resztą sobie już poradziłem

Napisany przez: rad11 11.10.2018, 15:48:08

Pliki to raczej $_FILES

Napisany przez: symer 11.10.2018, 15:49:56

No tak zamuliłem się w akcji ale tak , czy siak nic nie działa. Po prostu tablica $_FILES jest pusta

Napisany przez: rad11 11.10.2018, 15:53:36

Tak jak Python napisal masz zle podane parametry tablica z photo powinna byc o jedno miejsce wyzej

Napisany przez: symer 11.10.2018, 17:14:41

Zrobiłem tak i pełno błedów wyskakuje. Podniosłem o jedno miejsce wyżej:

  1. $this->client = http://www.php.net/static::createClient();
  2. // Any additional params
  3. $paramsArray = http://www.php.net/array();
  4. $this->client->request(
  5. 'POST',
  6. $this->client->getContainer()->get('router')->generate(
  7. 'edit_add', http://www.php.net/array('id_add' => '1')
  8. ),
  9. http://www.php.net/array(
  10. 'data' => $this->_createUploadedFile()
  11. ),
  12. http://www.php.net/array(
  13. 'Content-Type' => 'multipart/formdata'
  14. )
  15. );

Napisany przez: rad11 11.10.2018, 17:31:34

Daj jako trzeci parametr pusta tablice.. a czwarty ma byc ten z photo... czytasz to co jest w dokumentacji ? Czy raczej to jest komiks dla Ciebie i przegladasz sobie obrazki ?☺

Napisany przez: symer 11.10.2018, 17:59:03

No czytam dokumentacje ale próbowałem z niej i się wkurzyłem i tak zacząłem ten wątek. Widocznie źle to zrozumiałem. NO wcześniej tak przecież miałem zrobione i podczas wysłania mam pustą tablicę. Praktycznie wróciłem do punktu wyjścia :-(

Napisany przez: rad11 11.10.2018, 18:29:36

Wchodzi Ci w ogóle do tej akcji ? Przypisz ten request w testach caly do zmiennej i zrob na nim ->html() luub ->text i go pokaz

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)