2010-08-24 20 views
15

Ho l'idea alla base del test delle unità, tuttavia sto cercando di pensare a un modo semplice e pulito quando richiede la funzionalità del database. Ad esempio, ho una funzione che restituisce il risultato basato su una query di selezione del database. Il database dovrebbe sempre rimanere lo stesso per me per vedere correttamente che vengono restituiti solo i risultati corretti. Qual è il modo migliore per eseguire il test delle unità (in PHP) quando richiede l'inattività del database (che sia letto, scritto, aggiornato o eliminato)?Quali sono le best practice standard per creare test unitari per la funzionalità utilizzando i database?

+1

Vedere qui: http://stackoverflow.com/questions/145131/whats-the-best-strategy-for-unit-testing-database-driven-applications/145163 –

risposta

14

C'è un intero capitolo su che in manuale PHPUnit:

E 'come con tutto il resto, quando unit test. Crea uno stato conosciuto e testalo con il tuo codice per vedere se restituisce i risultati attesi.

+0

Ho paura che il link alla guida non sia funziona (404). –

+0

Link aggiornato https://phpunit.de/manual/current/en/database.html – leticia

4

Personalmente, creo un database di test fittizio e lo popolo con un set di dati noto per ogni esecuzione di test (lo faccio correttamente nelle funzioni setUp). Quindi i test vengono eseguiti su quel set di dati, quindi viene rimosso su tearDown ...

Ora, questo è più di un test di integrazione di un test di unità (e personalmente lo tratto in modo diverso da un test di unità, eseguito sul suo proprio programma insieme ad altri test di integrazione), ma è ancora abbastanza utile.

+0

+1 per "più di un test di integrazione di un test di unità" - Sono attualmente in fase di determinazione di quale delle nostre unità "I test hanno effetti collaterali su un database e li riclassificano come test di integrazione in modo da poter eseguire i test unitari più frequentemente e salvare i test di integrazione a bassa velocità per le build durante la notte. –

5

Non è un test di unità se ha bisogno del database.

+1

Francamente, è chiaro che il richiedente stava parlando di test * funzionali *, che in realtà dovrebbero avere qualcosa come il tuo database. –

+0

È interessante! Mai stato a conoscenza di quello ... – Sliq

+1

Quello avrebbe dovuto essere un commento alla domanda, o forse anche una modifica, ma questa non è una risposta. –

Problemi correlati