Třída HttpRequest není testovatelná

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jiriknesl
Člen | 56
+
0
-

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
+
0
-

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 | 8107
+
0
-

Mám připravenou překopanou implementaci HttpRequest, objeví se velmi brzo.

marek.dusek
Člen | 99
+
0
-

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
+
0
-

David Grudl napsal(a):

Mám připravenou překopanou implementaci HttpRequest, objeví se velmi brzo.

Super, +1! :)