Mocks Are the Little-Death: Escaping the Mirage of Green Tests
The article discusses the limitations of using mocks in software testing and proposes a new approach based on the Command design pattern. By separating actions from their execution, developers can create pure functions that are easier to test and maintain. This method allows for a more predictable flow of data transformations without the complexities introduced by mocking libraries.
- ▪Mocks can lead to false confidence in code quality, as they may not accurately reflect real-world scenarios.
- ▪The Command design pattern allows developers to describe side effects as data, making testing simpler and more reliable.
- ▪This approach eliminates the need for mocking libraries and enables better debugging and retry mechanisms.
Opening excerpt (first ~120 words) tap to expand
Photo by Joe McDaniel “Mocks are the mind-killer. They are the little-death that brings total production failure. I will face my mocks. I will permit them to pass over me and through me. And when they have gone past, I will turn the inner eye to see their path. Where the mocks have gone there will be nothing. Only pure data will remain.” We’ve all walked the burning sands of the ‘Green Test, Broken Production’ mirage. Watching a sea of green is comforting, but it is a hollow victory. The true test comes when the code meets the deep desert of production and withers, leaving us to find that a mock ceased to reflect reality months ago. I grew tired of mocks lying to me and the extra complexity they bring. This led me back to a classic design pattern: the Command.
…
Excerpt limited to ~120 words for fair-use compliance. The full article is at Lack of Imagination.