FluentAssertions 如何比较 2 个对象(使用反射或其他方式)?
How does FluentAssertions compare 2 objects (Using Reflection or another way)?
我目前正在使用 FluentAssertion
来比较 2 个对象。
我很想知道它是用什么方式比较的?
使用Reflection
然后像这样循环所有道具?
public static void PropertyValuesAreEquals(object actual, object expected)
{
PropertyInfo[] properties = expected.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
object expectedValue = property.GetValue(expected, null);
object actualValue = property.GetValue(actual, null);
if (!Equals(expectedValue, actualValue))
Assert.Fail("Property {0}.{1} does not match. Expected: {2} but was: {3}", property.DeclaringType.Name, property.Name, expectedValue, actualValue);
//……………………………….
}
如果用另一种方式比较,是什么?
我建议你read the documentation了解它使用的算法。但我可以告诉你它充满了反思。
我目前正在使用 FluentAssertion
来比较 2 个对象。
我很想知道它是用什么方式比较的?
使用Reflection
然后像这样循环所有道具?
public static void PropertyValuesAreEquals(object actual, object expected)
{
PropertyInfo[] properties = expected.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
object expectedValue = property.GetValue(expected, null);
object actualValue = property.GetValue(actual, null);
if (!Equals(expectedValue, actualValue))
Assert.Fail("Property {0}.{1} does not match. Expected: {2} but was: {3}", property.DeclaringType.Name, property.Name, expectedValue, actualValue);
//……………………………….
}
如果用另一种方式比较,是什么?
我建议你read the documentation了解它使用的算法。但我可以告诉你它充满了反思。