To mock or not mock is an important question, but let’s leave it apart and admit that we, Rubyists, use mocks in our tests.
Mocking is a powerful technique, but even when used responsibly, it could lead to false positives in our tests (thus, bugs leaking to production): fake objects could diverge from their real counterparts.
In this talk, I’d like to discuss various approaches to keeping mocks in line with the actual implementation and present a brand new idea based on mock fixtures and contracts.
This issue reveals the story behind verified doubles in RSpec
Under the hood of RSpec verified doubles
Mocking library for Ruby with contracts support
Experimental contract-based mockist testing library