Sto leggendo The Art of Unit Testing di Roy Osherove. Sono alla sezione 7.2 Scrivere test gestibili in cui l'autore ha questa nota sull'odore del codice:
NOTA: quando si refactoring lo stato interno per essere visibile a un test esterno, potrebbe essere considerato un odore di codice (un segno che qualcosa potrebbe essere sbagliato nella progettazione o nella logica del codice)? Non è un odore di codice quando si esegue il refactoring per esporre i collaboratori. È un odore di codice se stai eseguendo il refactoring e non ci sono collaboratori (quindi non devi stubare o deridere nulla).
EDIT : Ciò che l'autore intende per "collaboratori" sono le dipendenze. Alcuni dei suoi esempi di dipendenze sono classi che accedono a un database o che accedono al file system del sistema operativo. Qui è dove definisce lo stub e inizia a usare la parola collaboratore:
Uno stub è un sostituto controllabile per una dipendenza esistente (o collaboratore ) nel sistema.
L'autore non ha un esempio di questo odore di codice e non riesco a capire / immaginare come sarebbe. Qualcuno può spiegarlo un po 'di più e forse fornire un esempio concreto?