Tôi muốn để có thể so sánh hai đối tượng sau cho sự giống nhau sử dụng AutoFixture.SemanticComparison:AutoFixture chân dung - So sánh các chỉ phù hợp với tính chất
public class Object1
{
public int a;
}
public class Object2
{
public int a;
public int b;
}
Bây giờ, khi tôi làm điều đó theo cách này:
var o1 = new Object1 { a = 1 };
var o2 = new Object2 { a = 1, b = 2};
o1.AsSource().OfLikeness<Object2>().ShouldEqual(o2);
Tôi nhận được ngoại lệ sau: "Các thành viên sau không khớp: - b."
tôi phát hiện ra rằng tôi có thể bỏ qua các thành viên 'b' như thế này:
var o1 = new Object1 { a = 1 };
var o2 = new Object2 { a = 1, b = 2};
o1.AsSource().OfLikeness<Object2>().Without(object2 => object2.b).ShouldEqual(o2);
Tuy nhiên, tôi thấy rằng đây là khá cồng kềnh, vì bất cứ khi nào tôi thêm một thành viên mới vào lớp Object2, tôi phải sửa các bài kiểm tra đơn vị của tôi (hoặc ít nhất là người trợ giúp bài kiểm tra đơn vị).
Có cách nào để nói "Tôi muốn so sánh về sự giống nhau chỉ dành cho tập hợp con tồn tại trong cả hai đối tượng"?
Đối số bạn mô tả khá mạnh. Nó khiến tôi suy nghĩ về những gì là cồng kềnh hơn - thêm các thuộc tính mới vào Không() hoặc theo dõi hai đối tượng để thay đổi tên thuộc tính để tránh các mặt tích cực sai. Cảm ơn bạn đã hướng sự chú ý của mình đến điều này! –