Find the Seam
Explore how to identify and utilize seams in legacy Rails applications to enable testing without changing code. Learn to create test doubles and inject them to isolate test environments, helping maintain code stability while improving test coverage.
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 return value, but the generic form lets us do anything we want instead of the method call.
Pebbles
We might create our own object if we wanted a side ...