Đầu tiên, một số định nghĩa:
Một thử nghiệm đơn vị kiểm tra các đơn vị cách ly với các đơn vị khác, nhưng điều đó có nghĩa là không được xác định cụ thể bởi bất kỳ nguồn có thẩm quyền nào, vì vậy hãy xác định nó tốt hơn một chút: Nếu ranh giới I / O được vượt qua (cho dù I / O là mạng, đĩa, màn hình hoặc đầu vào UI), có một vị trí bán mục tiêu chúng ta có thể vẽ một đường. Nếu mã phụ thuộc vào I / O, nó sẽ vượt qua một ranh giới đơn vị, và do đó, nó sẽ cần phải chế giễu đơn vị chịu trách nhiệm cho I / O đó.
Theo định nghĩa đó, tôi không thấy một lý do thuyết phục nào để chế nhạo những thứ như các hàm thuần túy, nghĩa là thử nghiệm đơn vị cho chính nó vào các hàm thuần túy hoặc các hàm mà không có tác dụng phụ.
Nếu bạn muốn đơn vị thử nghiệm đơn vị có hiệu ứng, thay vào đó, đơn vị chịu trách nhiệm về hiệu ứng sẽ bị chế giễu, nhưng có lẽ bạn nên xem xét thử nghiệm tích hợp, thay vào đó. Vì vậy, câu trả lời ngắn gọn là: "nếu bạn cần chế giễu, hãy tự hỏi xem điều bạn thực sự cần là một bài kiểm tra tích hợp". Nhưng có một câu trả lời tốt hơn, dài hơn ở đây, và lỗ thỏ đi sâu hơn nhiều. Mocks có thể là mùi mã yêu thích của tôi vì có rất nhiều thứ để học hỏi từ chúng.
Mã mùi
Đối với điều này, chúng tôi sẽ chuyển sang Wikipedia:
Trong lập trình máy tính, mùi mã là bất kỳ đặc điểm nào trong mã nguồn của chương trình có thể chỉ ra vấn đề sâu hơn.
Nó tiếp tục sau đó ...
"Mùi là một số cấu trúc nhất định trong mã cho thấy sự vi phạm các nguyên tắc thiết kế cơ bản và ảnh hưởng tiêu cực đến chất lượng thiết kế". Suryanarayana, Girish (tháng 11 năm 2014). Tái cấu trúc cho mùi thiết kế phần mềm. Morgan Kaufmann. tr. 258.
Mùi mã thường không phải là lỗi; chúng không đúng về mặt kỹ thuật và không ngăn chương trình hoạt động. Thay vào đó, họ chỉ ra những điểm yếu trong thiết kế có thể làm chậm sự phát triển hoặc tăng nguy cơ lỗi hoặc thất bại trong tương lai.
Nói cách khác, không phải tất cả các mã mùi đều xấu. Thay vào đó, chúng là những dấu hiệu phổ biến cho thấy một cái gì đó có thể không được thể hiện ở dạng tối ưu của nó và mùi có thể chỉ ra một cơ hội để cải thiện mã được đề cập.
Trong trường hợp chế nhạo, mùi cho thấy các đơn vị dường như đang kêu gọi giả phụ thuộc vào các đơn vị bị chế giễu. Nó có thể là một dấu hiệu cho thấy chúng ta chưa phân tách vấn đề thành các phần có thể giải quyết được về nguyên tử và điều đó có thể chỉ ra một lỗ hổng thiết kế trong phần mềm.
Bản chất của tất cả sự phát triển phần mềm là quá trình chia nhỏ một vấn đề lớn thành các phần nhỏ hơn, độc lập (phân tách) và kết hợp các giải pháp lại với nhau để tạo thành một ứng dụng giải quyết vấn đề lớn (thành phần).
Mocking được yêu cầu khi các đơn vị được sử dụng để phá vỡ vấn đề lớn thành các phần nhỏ hơn phụ thuộc vào nhau. Nói cách khác, việc chế giễu là cần thiết khi các đơn vị thành phần nguyên tử được cho là của chúng ta không thực sự là nguyên tử và chiến lược phân rã của chúng ta đã thất bại trong việc phân tách vấn đề lớn hơn thành các vấn đề nhỏ hơn, độc lập hơn để giải quyết.
Điều khiến cho việc chế nhạo một mùi mã không phải là có bất cứ điều gì vốn đã sai với việc chế giễu - đôi khi nó rất hữu ích. Điều làm cho nó có mùi mã là nó có thể chỉ ra một nguồn khớp nối có vấn đề trong ứng dụng của bạn. Đôi khi loại bỏ nguồn khớp nối đó hiệu quả hơn nhiều so với viết một bản giả.
Có nhiều loại khớp nối, và một số tốt hơn so với những loại khác. Hiểu rằng mocks là một mã số mùi có thể dạy cho bạn để xác định và tránh những loại tồi tệ nhất đầu trong vòng đời thiết kế ứng dụng, trước mùi phát triển thành một cái gì đó tồi tệ hơn.