Bạn chắc chắn nên thực hiện tương tự nếu không chăm sóc tốt hơn các bài kiểm tra đơn vị của bạn hơn mã sản xuất của bạn về chất lượng và khả năng đọc. Các bài kiểm tra đơn vị thường là điều đầu tiên bạn nhìn vào khi cố gắng nắm bắt những gì một đoạn mã nào đó và người đọc nên nhanh chóng hiểu những gì đang bị đe dọa khi xem xét nghiệm. Các thử nghiệm đơn vị cũng có xu hướng thay đổi rất nhiều và sẽ phá vỡ rất nhiều nếu thiết kế của chúng không mạnh mẽ, điều này vô hiệu hóa các lợi ích của việc thử nghiệm.
Vi phạm Luật Demeter chắc chắn là một vấn đề trong các bài kiểm tra đơn vị của bạn vì lý do đó cũng như 2 điều khác xuất hiện trong tâm trí của tôi:
Nếu các bài kiểm tra của bạn vi phạm Luật Demeter trong các phần Sắp xếp hoặc Đạo luật của họ , thì đó có thể là dấu hiệu cho thấy mã sản xuất của bạn cũng vậy, vì các bài kiểm tra đơn vị của bạn chỉ là một người tiêu dùng mã khác của bạn và có thể sẽ gọi và vận hành lớp được kiểm tra giống nhau cách mà bất kỳ mã sản xuất khác sẽ làm.
Nếu các thử nghiệm của bạn phá vỡ Luật Demeter trong các phần Khẳng định của chúng (tức là bạn xác minh giá trị của một thứ gì đó được lồng sâu trong biểu đồ phụ thuộc của đối tượng được kiểm tra), thì đó có thể là những thử nghiệm tích hợp thực sự thay vì thử nghiệm đơn vị. Nói cách khác, nếu trong TestA bạn khẳng định rằng ABCD bằng với một cái gì đó, thì có thể bạn đang thực sự thử nghiệm D và A thay vì chỉ A.
Nhân tiện, khi bạn nói
Tôi rất thường xuyên phá vỡ Luật Demeter, vì viết nhanh hơn và không sử dụng quá nhiều biến số.
bạn nên biết rằng viết
var grab = myDependency.Grab;
var something = grab.Something;
var very = something.Very;
very.Deep();
thực sự không có gì tốt hơn Demeter khôn ngoan hơn
myDependency.Grab.Something.Very.Deep();
nếu đó là những gì bạn muốn nói