2017-03-31 22 views
5

Tôi đã đọc rằng chế giễu mọi thứ đều xấu.
Test Smell: Everything is mocked
Mock Everything Is a Good Way to SinkLàm thế nào để viết một bài kiểm tra đơn vị tốt mà không chế nhạo mọi thứ?

Tôi cũng đã đọc rằng đơn vị kiểm tra nhìn vào một thành phần duy nhất trong khi Tích hợp kiểm tra kiểm tra toàn bộ hệ thống làm việc cùng nhau.
Writing Great Unit Tests: Best and Worst Practices

Điều này làm tôi bối rối. Theo tôi hiểu, để viết một bài kiểm tra đơn vị thích hợp, người ta cần phải tách riêng một thành phần bằng cách chế nhạo mọi thứ trừ S.U.T. Nếu một người sử dụng các đối tượng thực trong suốt quá trình kiểm tra, thì liệu thử nghiệm đó có trở thành một thử nghiệm tích hợp không?

Làm thế nào để viết một bài kiểm tra đơn vị (cô lập) tốt mà không bị chế nhạo mọi thứ?

+0

Rất khó trả lời mà không biết bạn có ý nghĩa gì với "mọi thứ". – developer

Trả lời

4

Mô hình nhạo báng là mùi hôi. Bạn chỉ nên giả lập các phụ thuộc tham gia vào logic của phương pháp thử nghiệm, chứ không phải dữ liệu. Nhưng ngay cả với quy tắc đơn giản này, mọi thứ không phải lúc nào cũng rõ ràng.

Trong một số trường hợp, đơn vị kiểm tra phương pháp là thẳng vì phương pháp có quy tắc logic riêng và cũng có một hoặc hai lời gọi đến một phụ thuộc bên ngoài riêng biệt để thực hiện để hoàn thành logic của nó. Trong trường hợp này chế giễu có vẻ tự nhiên.

Trong một số trường hợp khác, kiểm tra đơn vị ít rõ ràng hơn vì phương pháp kiểm tra có rất ít quy tắc logic. Nó trong thực hiện của nó chủ yếu là các cuộc gọi phụ thuộc bên ngoài. Trong trường hợp này, việc chế nhạo có vẻ thực sự không tự nhiên vì bản chất của thử nghiệm có thể là chế nhạo. Kiểm tra các yêu cầu luồng với chế nhạo từng cuộc gọi đang thử nghiệm một hộp màu trắng. Nó s giòn vì nó không kiểm tra hành vi logic của phương thức. Nó chỉ chứng minh một điều: mã của bạn làm những gì nó làm.

Trong trường hợp này, tôi nghĩ rằng các bài kiểm tra tích hợp nên được ưu tiên hơn các bài kiểm tra đơn vị.

Các vấn đề liên quan