Test double đo thật: cùng một dịch vụ, viết test bằng stub, mock và fake rồi refactor 5 lần và cấy 4 lỗi — stub không bao giờ vỡ nhưng lọt 3/4 lỗi, mock bắt đủ 4 lỗi nhưng vỡ ở cả 4 refactor giữ nguyên hành vi, fake bắt đủ 4 và vỡ 0
Một Service.Place với hai phụ thuộc Repo và Mailer, ba bộ test cùng bốn ca nhưng ba kiểu thay thế: stub trả giá trị đóng sẵn, mock ghi lại và khẳng định chuỗi lời gọi, fake là cài đặt thu nhỏ trong bộ nhớ. Tạo 5 refactor giữ nguyên hành vi bên ngoài và 4 lỗi thật, chạy cả ba bộ trên từng bản. Stub: 0 test vỡ khi refactor nhưng chỉ bắt 1/4 lỗi, lọt quên gửi thư, lưu đơn hai lần, gửi thư khi lưu hỏng. Mock: bắt 4/4 lỗi nhưng 6 test phải sửa qua 4 refactor, kể cả khi chỉ bỏ một lần gọi thừa. Fake: bắt 4/4, vỡ 0. Thêm một phương thức vào interface làm cả ba bộ lỗi biên dịch.