In which I argue that mocks are a code smell, and layers lead to increased coupling:
Mocks are Bad, Layers are Bad (in ACCU‘s Overload Journal issue 127)
I also suggest some ways to avoid both mocks and layers, including Classical TDD, Selfish Object, Refactor to Functional and, of course, the Unix Philosophy. I work through a code example to demonstrate some of these things.
I also suggest that frameworks and inheritance hierarchies are bad, but the title was getting too long already.
You can also get the PDF of Overload 127.