Durante la stesura dei test PHPSPEC per un'applicazione Zend Framework 2, mi chiedo fino a che punto "scavare". Considera questo caso molto semplice:
Un DomainService (dominio nel senso URL della parola) dovrebbe essere in grado di elencare tutti gli oggetti Foo, funziona.
Fare teste / code del test non è semplice. Questo DomainService è alimentato tramite DI con DomainMapper. Questo DomainMapper è un Doctrine Mapper che trasforma le righe MySQL in Doctrine Entities. In teoria, non vorrei coprire che il mio codice può:
- istanzia il DomainService (ma questo viene fatto attraverso le fabbriche ZF2 - Sto bypassando completamente il processo di Factory nell'uso di phpspec's let). Questo tailspin in un test separato per la Factory, che ha bisogno di un oggetto localizzatore di servizi funzionale?
- verifica che possa trovare tutti gli oggetti Foo , ma ciò significa richiamare Doctrine ed eseguire una query SQL. Il test non dovrebbe essere dipendente dal database, presumo, non vorremmo che i dati esterni modifichino il test. Ma che cosa dovrei testare, che restituisce correttamente un array vuoto ? Gli errori di query semantica potrebbero creare condizioni di array vuote che sono errori. Accettiamo semplicemente che i test non lo coprano?
Dove disegna la linea? Testare i servizi DI' che interagiscono con i database non possono essere automaticamente off-limits?