Sto leggendo The Art of Unit Testing di Roy Osherove. Sono nella sezione 7.2 Scrivere test mantenibili dove l'autore ha questa nota sull'odore del codice:
NOTE: When you refactor internal state to be visible to an outside test, could it be considered a code smell (a sign that something might be wrong in the code's design or logic)? It's not a code smell when you're refactoring to expose collaborators. It's a code smell if you're refactoring and there are no collaborators (so you don't need to stub or mock anything).
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:
A stub is a controllable replacement for an existing dependency (or collaborator) in the system.
L'autore non ha un esempio di questo odore di codice e ho difficoltà a capire / immaginare come sarebbe questo. Qualcuno può spiegarlo un po 'di più e magari fornire un esempio concreto?