我正在尝试比较我的单元测试中的两个类对象,但是即使字段是相同的,也会得到异常。
[TestMethod]
public async Task getResult()
{
var expectedResult = new List<myClass>(){
new myClass(){
Id = 1
Name = "updatedName"
}
}
// here I am calling POST method to update the name
// won't include the full code because of brevity
// now getting the result
var actualResult = await this.getResult(1) // getting the result of the above Id
Assert.Equal(expectedResult, actualResult)
}
例外我得到:
myClass
{
Id = 1
Name = "updatedName"
} because myClass should match, but found
myClass
{
Id = 1
Name = "updatedName"
}
我很困惑,因为所有的字段都是相同的,那么为什么它们不匹配呢?
发布于 2022-02-21 05:00:04
Assert.Equal
依赖于对象的.Equals
方法(请看这里)。在创建自己的类时,您可以选择重写此方法,并添加您自己的比较两个对象相等的逻辑(例如,逐字段相等检查)。
如果不重写它,则有一个从Object
继承的默认Object
,它等同于.ReferenceEquals
:如果两个对象具有相同的引用,否则返回true。当两个对象具有相同的引用时,唯一的情况是它是同一个对象。
在您的示例中,您可以为类定义.Equals
覆盖(例如,看这里),也可以尝试遵循这就是答案中关于如何对两个对象执行深度相等检查的建议。第三个选项是创建一个继承自IEqualityComparer
的单独类,它将为您的对象提供完全相等的检查逻辑,而不是类代码库(例如,见本文)的一部分。
https://stackoverflow.com/questions/71200878
复制相似问题