2010-03-08 3 views
12

Sto scrivendo del codice PHP per analizzare gli URL in arrivo. Si basa in gran parte su globalmente PHP come $_SERVER e $_GET. Sto pensando di impostare manualmente questi in PHPUnit unit test setUp() funzione. C'è un modo migliore per farlo?

risposta

11

Un'idea sarebbe quella di avvolgere $ _SERVER e $ _GET in classi invece di accedervi direttamente, in modo da non doverne fare completamente affidamento. Vedi questo approccio frequentemente nei quadri comuni. In questo modo puoi bloccare o deridere facilmente la richiesta senza dover configurare lo stato dei superglobali.

Si prega inoltre di vedere il capitolo sulla Global State in the PHPUnit Manual

+0

Potrebbe dare un esempio di come impostare lo stato di superglobals senza un involucro? (Anche se è puzzolente) – JayIsTooCommon

+1

@JayIsTooCommon li hai appena impostati nel test, ad es. $ _SERVER ["foo"] = 42 se ricordo correttamente. Può farlo nel metodo di test effettivo o in setup() o in setupbeforeclass() (se esiste ancora al giorno d'oggi) – Gordon

+0

Ah ok, allora devo fare qualcos'altro di sbagliato. Grazie :) – JayIsTooCommon