Phpunit Testing: Simulare Una Chiamata Http Post

Mi sto avvicinando allo unit testing ‘prima che sia troppo tardi’ per il progetto in corso.

Dato che tutto parte da alcune chiamate via HTTP_POST che un gestionale di terze parti fa al nostro sistema, vorrei testarle molto più che ampiamente.

Così mi sono trovato sin da subito a pormi la domanda in oggetto: come faccio dentro ad uno unit test a simulare una chiamata http post ?

In questo modo posso verificare come si comporta l’applicazione senza tutti i parametri, con parametri non previsti, in casi di SQL injection, etc…

Quando si fa testing non si scrive il test per vedere come si comporta l’applicazione. Casomai il contrario. Il test scritto dopo il codice, non ha molto senso.

beh, è un caso a parte. si tratta del fatto che la prima app è di terze parti e la seconda era gia fatta… ora ci stiamo mettendo le mani per farla crescere, per cui, prima che sia troppo tardi …

Ps: ma io avevo CANCELLATO questo post … la risposta mi era venuta in mente subito… basta usare curl…

E’ un bene che il post non si sia cancellato,

così posso raccontarti la mia esperienza nefasta [size=2]usando curl.[/size]

Curl cambia la sintassi di utilizzo in base alla sua versione.

Una volta mi son ritrovato a dover modificare un bel pò di codice solo per aver cambiato hosting (e quindi versione di curl).

Da allora io uso questo:

http://wezfurlong.org/blog/2006/nov/http-post-from-php-without-curl/

Usi curl anche nei test?

beh i server sono letteralmente ‘nostri’ quindi questi problemi non ci saranno … presumibilmente, comunque si, uso curl anche per i test.

Scusami, mi mostreresti i test che fai?

…uhm … te li descrivo …

faccio una curl che dovrebbe ritornarmi un xml

  • testo il nome del file

  • testo la dimensione del file

  • testo il formato xml, che dev’essere valido

  • testo ogni singolo elemento che esista e contenga gli attributi richiesti, etc…

  • quindi per ogni specifica chiamata vengono verificati specifici valori di ritorno, in particolare testo decine di possibili errori di chiamate per verificare che vengano restituiti xml sotto forma di comunicazione di errore e siano validi…

è un test molto complesso, fatto di centinaia di asserts e similari …

Mi piacerebbe vederli perché in genere quando ho fatto test funzionali mi sono limitato a fare chiamate GET o POST. Insomma. di curl non ne ho mai fatto uso.