Třída HttpRequest není testovatelná
- jiriknesl
- Člen | 56
Třída HttpRequest používá přímo $_SERVER, pokud píšu test, potřebuju podvrhávat obsah requestu (má to ve škálovaném řešení i další použití). Proto bych uvítal, kdyby si HttpRequest v initialize jen okopíroval data ze $_SERVER do nějakého atributu, který by měl gettery a settery pro přístup k jednotlivým klíčům.
- Blizzy
- Člen | 149
Tohle bych uvítal taky, už jsem se s tímto problémem jednou potkal a vyřešil jsem ho nakonec dost škaredě, protože samotný HttpRequest je poměrně složitý kus kódu a přepsat ho tak, aby fungoval podle mých představ a byl stabilní jen tak sám prostě nezvládnu. Podle mě by mohla být ve frameworku přítomná i implementace HttpRequestu určená pro testovací účely nebo kdyby samotný HttpRequest mohl přijmout podstrčené pole $_SERVER.
Pro testování se používá myslím hlavně PresenterRequest, i když ten samozřejmě nestačí na všechno.
O tomto už se tady na fóru jednou diskutovalo. Jsou tam i nějaké možnosti (kód třídy UriHttpRequest), jak to řešit.
Editoval Blizzy (4. 8. 2010 15:27)
- David Grudl
- Nette Core | 8227
Mám připravenou překopanou implementaci HttpRequest, objeví se velmi brzo.
- marek.dusek
- Člen | 99
Není „okopírování“ zbytečná režie? Pokud se nemýlim, některé věci v $_SERVER jsou „lazy“ a řeší se až ve chvíli, kdy se na ně člověk zeptá (např. IP adresa), tj. takhle by se to „zjišťovalo“ v každém požadavku?
Nebo se mýlím?
- Ondřej Mirtes
- Člen | 1536
David Grudl napsal(a):
Mám připravenou překopanou implementaci HttpRequest, objeví se velmi brzo.
Super, +1! :)