Cách đây một thời gian tôi đã đọc, trên câu trả lời Stack Overflow mà tôi không thể tìm thấy, một câu giải thích rằng bạn nên kiểm tra API công khai và tác giả nói rằng bạn nên kiểm tra giao diện. Tác giả cũng giải thích rằng nếu việc triển khai phương thức thay đổi, bạn không cần phải sửa đổi trường hợp thử nghiệm, vì làm điều này sẽ phá vỡ hợp đồng để đảm bảo hệ thống được thử nghiệm hoạt động. Nói cách khác, một thử nghiệm sẽ thất bại nếu phương thức không hoạt động, nhưng không phải vì việc triển khai đã thay đổi.
Điều này kêu gọi sự chú ý của tôi khi chúng ta nói về chế giễu. Vì chế độ nhạo báng phụ thuộc rất nhiều vào các cuộc gọi kỳ vọng từ hệ thống dưới sự phụ thuộc của thử nghiệm, nên các giả lập được kết hợp chặt chẽ với việc triển khai hơn là giao diện.
Trong khi nghiên cứu mock vs stub , một số bài báo đồng ý rằng nên sử dụng sơ khai thay vì giả, vì chúng không phụ thuộc vào kỳ vọng từ các phụ thuộc, có nghĩa là bài kiểm tra không cần kiến thức về hệ thống cơ bản khi thực hiện kiểm tra.
Câu hỏi của tôi sẽ là:
- Làm giả có vi phạm nguyên tắc mở / đóng?
- Có điều gì đó còn thiếu trong cuộc tranh luận có lợi cho các cuống ở đoạn cuối, khiến cho các cuống không quá tuyệt so với giả?
- Nếu vậy, khi nào sẽ là một trường hợp sử dụng tốt để chế nhạo và khi nào sẽ là một trường hợp sử dụng tốt để sử dụng sơ khai?
Since mocking relays heavily on expectation calls from system under test's dependencies...
Tôi nghĩ rằng đây là nơi bạn sẽ đi. Một giả là một số đại diện nhân tạo của một hệ thống bên ngoài. Nó không đại diện cho hệ thống bên ngoài theo bất kỳ cách nào, ngoại trừ trong trường hợp nó mô phỏng hệ thống bên ngoài theo cách nó cho phép các thử nghiệm được chạy chống lại mã có phụ thuộc vào hệ thống bên ngoài nói trên. Bạn vẫn sẽ cần các bài kiểm tra tích hợp để chứng minh rằng mã của bạn hoạt động với hệ thống thực, không bị khóa.