我正在使用CompareNet对象对我的系统进行自动测试。这有助于确保性能优化不会改变系统的预期行为,并确保不会引入错误。
当我有一个以抽象方式声明的集合时,我希望比较内容,而不是集合本身;但是,我看不到启用此功能的选项。
课程:
public class MustBeCorrect
{
public string Name { get; set; }
IEnumerable<string> Items { get; set; }
}
测试:
[Fact] void IsCorrect()
{
var obj1 = new MustBeCorrect
{
Name = "Kitty",
Items = new string[]
{
"Collar",
"Bell"
}
};
var obj2 = new MustBeCorrect
{
Name = "Kitty",
Items = new List<string>
{
"Collar",
"Bell"
}
};
comparer.Compare(obj1, obj2); // False!
}
尽管两个对象之间的唯一区别是一个使用数组,另一个使用列表,但上述两个对象的比较结果并不相等。然而,就我的合同而言,这两个人似乎应该被认为是平等的。
如何将比较选项配置为仅比较集合的内容,而不是集合本身?