Tôi đang đọc rằng bạn cho rằng các bài kiểm tra đơn vị, giống như các đối tượng RẮN, phải có "một lý do để phá vỡ". Đó là một mục tiêu cao cả, nhưng tôi nghĩ bạn sẽ thấy rằng trong nhiều trường hợp, điều đó đơn giản là không khả thi. Một trong những trường hợp đó là ở đây, nơi bạn có một đối tượng miền "giàu" (DDD phân biệt giữa các Thực thể và Đối tượng Giá trị, cả hai đều bao gồm "mô hình miền") là một phụ thuộc của hệ thống đang được thử nghiệm.
Trong những tình huống này, tôi có triết lý rằng, được đưa rađối tượng miền có phạm vi kiểm tra đơn vị toàn diện của riêng mình, tin tưởng rằng đối tượng sẽ hoạt động như được thiết kế trong một thử nghiệm đơn vị cho một SUT khác nhau không nhất thiết vi phạm thử nghiệm đơn vị. Nếu thử nghiệm này bị hỏng do thay đổi tên miền, thì tôi sẽ hy vọng thử nghiệm đơn vị của đối tượng miền cũng bị phá vỡ, dẫn tôi đến một cái gì đó để điều tra. Nếu thử nghiệm đơn vị của đối tượng miền đã được cập nhật đúng như thử nghiệm màu đỏ, sau đó chuyển sang màu xanh lục với thay đổi và thử nghiệm khác sau đó không thành công, đó cũng không hẳn là một điều xấu; điều đó có nghĩa là những kỳ vọng của thử nghiệm khác này xung đột với những kỳ vọng mới cho miền và tôi cần đảm bảo cả hai đều đồng ý với nhau và các tiêu chí chấp nhận bao quát của hệ thống.
Như vậy, tôi sẽ chỉ chế nhạo một đối tượng miền nếu đối tượng miền cho biết "tác dụng phụ" không mong muốn từ góc độ kiểm tra đơn vị (nghĩa là chạm vào tài nguyên bên ngoài như lưu trữ dữ liệu) hoặc nếu logic của đối tượng miền đủ phức tạp mà đặt nó ở trạng thái thích hợp cho bài kiểm tra trở thành vật cản để xác định và vượt qua bài kiểm tra.
Điều đó sau đó trở thành câu hỏi lái xe; cái nào dễ hơn Để sử dụng đối tượng miền cho mục đích dự định của nó trong thử nghiệm, hoặc để chế nhạo nó? Làm bất cứ điều gì dễ dàng hơn, cho đến khi nó không còn là lựa chọn dễ dàng hơn, chẳng hạn như khi thay đổi chức năng phá vỡ thử nghiệm dịch vụ theo cách phức tạp; nếu điều này xảy ra, sau đó viết lại thử nghiệm để tạo ra một bản mô tả phơi bày các yêu cầu chức năng phụ thuộc vào dịch vụ, mà không có sự phức tạp phá vỡ nó.
Hiểu theo cách nào đó, cần có một thử nghiệm tích hợp sử dụng đối tượng miền thực được cắm vào dịch vụ thực để kiểm tra sự tương tác giữa hai loại này ở mức độ trừu tượng cao hơn (ví dụ như thử nghiệm, không chỉ là chức năng đằng sau một dịch vụ điểm cuối, nhưng một proxy qua đó đối tượng miền được tuần tự hóa và gửi).