Introduction
In the previous two chapters, you've been shown how to stub the mocked object's behavior in a number of ways. You can also see the verification approach that favors the assertion of what should happen instead of how it should happen, by telling you to verify the behavior, if possible, and not the implementation.
The preceding suggestion always starts heated discussions. Martin Fowler, in his article, Mocks aren't Stubs (http://martinfowler.com/articles/mocksArentStubs.html) defines that in general, there are two approaches in terms of verification: verifying state and verifying behavior. A part of this article is about coupling tests to the implementation. Fowler talks about one of the key problems behind such a binding of tests to the actual code—the interference in refactoring. Having such brittle tests could make them fail each time you refactor, even though the final behavior remains the same.
The importance of refactoring as an indispensable process in software development...