Domanda

Qual è il modo migliore per testare gli input $ _GET e $ _POST in PHPUnit ?

Ho una classe che disinfetta l'input e voglio verificare che funzioni correttamente durante l'elaborazione di dati fasulli. Esiste un modo semplice per impostare le variabili del modulo in PHPUnit o devo semplicemente passare la convalida a una classe / funzioni secondarie che vengono alimentate con le variabili del modulo in modo da testarle indirettamente?

È stato utile?

Soluzione

Dai un'occhiata all'idea di Iniezione di dipendenza . In poche parole dovresti alimentare il tuo codice di cosa ha bisogno invece di ottenere i dati di cui ha bisogno ... Ecco un esempio:

esempio senza iniezione di dipendenza

function sanitize1() {
  foreach(

Dai un'occhiata all'idea di Iniezione di dipendenza . In poche parole dovresti alimentare il tuo codice di cosa ha bisogno invece di ottenere i dati di cui ha bisogno ... Ecco un esempio:

esempio senza iniezione di dipendenza

function sanitize2(array &$formData) {
  foreach($formData as $k => $v) {
    // code to sanitize $v
  }
}

sanitize2(

Dai un'occhiata all'idea di Iniezione di dipendenza . In poche parole dovresti alimentare il tuo codice di cosa ha bisogno invece di ottenere i dati di cui ha bisogno ... Ecco un esempio:

esempio senza iniezione di dipendenza

function sanitize1() {
  foreach(

Dai un'occhiata all'idea di Iniezione di dipendenza . In poche parole dovresti alimentare il tuo codice di cosa ha bisogno invece di ottenere i dati di cui ha bisogno ... Ecco un esempio:

esempio senza iniezione di dipendenza

function testSanitize() {
  $fakeFormData = array ('bio' => 'hi i\'m arin', 'location' => 'San Francisco');
  sanitize($fakeFormData);
  // assert something
}

esempio con Iniezione delle dipendenze

<*>

Vedi la differenza? Nel test PHPUnit puoi passare sanitize2 () a un array associativo di tua scelta; hai iniettato la dipendenza. Considerando che sanitize1 () è abbinato a $ _POST . $ _POST e $ _GET sono comunque matrici associate, quindi nel tuo codice di produzione puoi passare $ _GET o $ _POST alla tua funzione, ma nei test delle unità avresti codificato alcuni dati previsti.

Esempio di unit test:

<*>POST as $k => $v) { // code to sanitize $v } } sanitize1();

esempio con Iniezione delle dipendenze

<*>

Vedi la differenza? Nel test PHPUnit puoi passare sanitize2 () a un array associativo di tua scelta; hai iniettato la dipendenza. Considerando che sanitize1 () è abbinato a $ _POST . $ _POST e $ _GET sono comunque matrici associate, quindi nel tuo codice di produzione puoi passare $ _GET o $ _POST alla tua funzione, ma nei test delle unità avresti codificato alcuni dati previsti.

Esempio di unit test:

<*>POST);

esempio con Iniezione delle dipendenze

<*>

Vedi la differenza? Nel test PHPUnit puoi passare sanitize2 () a un array associativo di tua scelta; hai iniettato la dipendenza. Considerando che sanitize1 () è abbinato a $ _POST . $ _POST e $ _GET sono comunque matrici associate, quindi nel tuo codice di produzione puoi passare $ _GET o $ _POST alla tua funzione, ma nei test delle unità avresti codificato alcuni dati previsti.

Esempio di unit test:

<*>POST as $k => $v) { // code to sanitize $v } } sanitize1();

esempio con Iniezione delle dipendenze

<*>

Vedi la differenza? Nel test PHPUnit puoi passare sanitize2 () a un array associativo di tua scelta; hai iniettato la dipendenza. Considerando che sanitize1 () è abbinato a $ _POST . $ _POST e $ _GET sono comunque matrici associate, quindi nel tuo codice di produzione puoi passare $ _GET o $ _POST alla tua funzione, ma nei test delle unità avresti codificato alcuni dati previsti.

Esempio di unit test:

<*>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top