Find the Seam

Learn about Seams and Pebbles with examples and learn how to redirect the code execution.

We'll cover the following...

Test doubles are a specific version of a more general technique for working with legacy code, which involves finding seams in the code and exploiting them to make testing the legacy functionality possible.

Seams

A seam is a place where we can change our application’s behavior without changing the code. A test double acts as a seam because adding the test double, which happens in the test, changes the behavior of the code by mandating a specific response to a method call without executing the method. Again, the behavior of the method under test changes in the test environment without affecting behavior in production and without changing the existing development code.

It sounds magical, but the basic idea is simple, and Ruby makes it easy to execute. We redirect a method call from its intended target to some other code that we want to run during tests. A test double does this by replacing the entire method call with a ...