首页 > 解决方案 > IEnumerable.contains 在集合中找不到匹配项,该集合确实存在

问题描述

我有一个IEnumerable<MyClass>从 foo 方法返回的。MyClass包含一个嵌套类,通常如下所示。问题Assert总是返回 false。

MyClass
{
    SomeNestedClass
    {
        public decimal  decimalField1;
        public int      intField2;
    }
}

我正在编写一个单元测试来测试该Foo方法

// Arrange
var expectedItem = new MyClass 
{
    new SomeNestedClass
    {
        decimalField1 = 10M,
        intField2 = 20
    }
}

// Act
var results = sut.Foo();

// Assert
Assert.IsTrue(results.Contains(expectedItem));

问题是断言总是错误的。

标签: c#unit-testing

解决方案


我们那里没有足够的信息(sut.Foo(); 的实现),但我怀疑您必须覆盖 MyClass 类型中的 Object.Equals() 方法。否则, Contains() 函数将仅检查引用是否相等。


推荐阅读