IT nói tiếng người
Kiểm thử

Mock và Stub khác nhau thế nào?

Trả lời ngắnStub trả sẵn một câu cố định. Mock cũng trả sẵn, nhưng còn nhớ nó đã bị gọi mấy lần và với tham số gì — để test kiểm tra được đúng điều đó.

Bảng so sánh

StubMock
Việc chínhCung cấp dữ liệu để code chạy tiếpCung cấp dữ liệu ghi lại cách nó bị gọi
Có trí nhớ khôngKhông
Test kiểm tra gìKết quả cuối cùng đúng chưaKết quả, hàm kia có được gọi đúng cách không
Test dính vào cài đặtÍt — đổi cách viết code, test vẫn xanhNhiều — đổi cách gọi hàm là test đỏ dù hành vi không đổi
Nên chọn khiChỉ cần có dữ liệu để chạyViệc “có gọi hay không” chính là thứ cần kiểm

💡 Cách nhớ

Bạn có cần kiểm tra “hàm đó có được gọi không” không? Có → mock. Không → stub.

Chọn cái nào?

⚠ Bẫy thường gặp

Dùng mock ở mọi chỗ là cái bẫy phổ biến nhất. Nó khiến test dính chặt vào cách code được viết chứ không phải code làm được gì. Kết quả: dọn dẹp code mà không đổi hành vi thì hàng loạt test vẫn đỏ, và dần dần không ai dám sửa code nữa.

Câu hỏi hay gặp

Mock và Stub cái nào dùng nhiều hơn?
Stub dùng nhiều hơn trong thực tế vì đơn giản và ít làm test dễ vỡ. Mock chỉ nên dùng khi việc kiểm tra cách gọi hàm thật sự quan trọng.
Fake khác gì Mock và Stub?
Fake là bản giả có logic thật thu nhỏ, ví dụ một database chạy trong bộ nhớ. Nó phức tạp hơn stub nhưng chạy thật hơn. Ở giai đoạn đầu chỉ cần nhớ stub và mock là đủ.

Đọc kỹ từng thuật ngữ

← Xem các bảng so sánh khác