Come testate l'astrazione del database in PHP?

1

Mi scuso in anticipo se questa domanda è troppo soggettiva, ma ho difficoltà a trovare una buona risposta, probabilmente perché non c'è una risposta corretta da dare.

Attualmente sto scrivendo un livello di astrazione del database per unificare l'uso di una singola API in tutte le mie applicazioni. Forse reinventare la ruota, ma lo faccio principalmente per le mie specifiche necessità di determinate funzionalità Oracle che alla fine verranno migrate lontano da Oracle.

Per il driver Oracle trovo difficile testare l'oggetto a causa della mancanza di un'API OO in PHP, quindi per testare ho bisogno di toccare il database. Sembra che ci siano due scuole di pensiero sulla verifica della funzionalità del database.

  1. Non toccare il database, prendi in giro tutto (ovviamente impossibile senza un'API OO).
  2. Permetti l'esecuzione della funzionalità e quindi il test delle caratteristiche piuttosto che il test dell'unità.

La mia domanda è doppia, qualcuno l'ha già fatto prima e come hai gestito il test? Se non hai avuto motivo di farlo prima, quali sono i tuoi pensieri su come lo gestiresti e perché?

    
posta philipobenito 26.04.2013 - 21:36
fonte

2 risposte

1

Se non è possibile, configurare un database di test e far interagire il test con esso. Dato che questo è uno strato di comunicazione, non dovresti fare tutto questo insieme.

C'è un modo per prendere in giro le funzioni PHP se si utilizza PHP 5.3 o versioni successive tramite namespacing. Fondamentalmente, si inserisce il codice e si prova nello stesso spazio dei nomi. Quindi nel tuo test puoi prendere in giro le chiamate di funzione. PHP controllerà il tuo spazio dei nomi e troverà la funzione e non chiamerà la funzione interna.

link

In questo modo sarai in grado di testare la tua classe e prendere in giro le funzioni interne di php senza dover toccare alcun database.

    
risposta data 02.05.2013 - 03:29
fonte
0

Ho visto qualcuno fare una sostituzione automatica di tutte le funzioni in un caso simile prima di eseguire i suoi test unitari.

Quindi prima legge tutto il codice che dovrebbe essere testato, nel tuo caso cerca le funzioni oci _ * () e le sostituisce con le funzioni my_oci _ * (). È quindi possibile prendere in giro queste funzioni my_oci _ * ().

Un'altra opzione potrebbe essere l'installazione di una versione php senza il supporto oci nell'ambiente di test, quindi le funzioni non sono definite ed è possibile implementarle / deriderle da soli.

    
risposta data 27.04.2013 - 14:33
fonte

Leggi altre domande sui tag