In the previous chapter, we took a tour of the matchers that ship with RSpec. You can be productive in RSpec with just these matchers. On simpler projects, they’re all you’ll need.
Eventually, though, you’re going to hit the limits of the built-in matchers. Because they’re meant for testing general-purpose Ruby code, they require you to speak in Ruby terms rather than your project’s terms.
For example, the following expectations are a jumble of Ruby method calls and hard-coded values: ...