Quay lại thư viện câu hỏi
unit testing Junior

Trong Unit Testing, sự khác biệt giữa Stub và Mock là gì và lập trình viên Junior thường mắc phải sai lầm nào khi sử dụng chúng?

1. Bản chất cốt lõi

  • Stub: Cung cấp sẵn các dữ liệu giả lập (hard-coded data) để trả về cho hàm đang được test khi nó gọi đến một dependency. Stub tập trung vào trạng thái (State-based verification).
  • Mock: Là một đối tượng giả lập được cấu hình trước với các kỳ vọng (expectations) về hành vi, ví dụ như một phương thức phải được gọi chính xác bao nhiêu lần, với tham số nào. Mock tập trung vào hành vi (Behavior-based verification).

2. Sai lầm phổ biến của Junior

  • Lạm dụng Mocking: Mock quá nhiều thành phần bên trong khiến Unit Test trở thành việc test implementation detail thay vì business logic. Khi refactor code (thay đổi cấu trúc bên trong nhưng giữ nguyên kết quả), test case bị vỡ dù tính năng vẫn chạy đúng.
  • Nhầm lẫn giữa Stub và Mock: Sử dụng Mock để trả về dữ liệu đơn thuần thay vì dùng Stub, dẫn đến việc thiết lập test quá phức tạp không cần thiết.

3. Ví dụ minh họa (Jest trong TypeScript)

// Sử dụng Stub để trả về dữ liệu giả
const userServiceStub = {
  getUser: jest.fn().mockReturnValue({ id: 1, name: 'Unicode' })
};

// Sử dụng Mock để kiểm tra hành vi gọi hàm
const loggerMock = {
  log: jest.fn()
};

4. Kinh nghiệm thực chiến

Ở cấp độ Junior, hãy ưu tiên sử dụng Stub hoặc Fake data đơn giản trước. Chỉ sử dụng Mock khi thực sự cần kiểm chứng một side effect quan trọng (ví dụ: hàm gửi email hoặc ghi log hệ thống phải được gọi đúng một lần).

Luyện tập câu hỏi này trong chế độ đếm ngược mô phỏng phỏng vấn thật:
Phòng Luyện Tập
Khóa học Chuyên sâu Chủ đề unit testing

Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp

Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.

Tải Tuyển Tập 100+ Câu Hỏi Phỏng Vấn Chuyên Sâu (PDF)

Bộ tài liệu chuẩn Senior do Unicode Academy tuyển chọn & biên soạn, hỗ trợ tải về định dạng PDF chuẩn in ấn.

High-Ticket Mentoring
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?

Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.

AI Resume Scanner
Kiểm Tra CV Chuẩn ATS Miễn Phí

Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học