DeepEqual
DeepEqual copied to clipboard
Ignore property with in list type of sub object with Deep Equal
Hello
I am using the DeepEqual to test if the results of a test match my expected output.
I do the comparison simply as
results.ShouldDeepEqual(expected);
However, I don't know how to ignore a property within my list type
The type I am deep comparing contains a list. The data type held within this list contains a Guid property Id which I want to ignore, as well as a date.
Ignoring top level properties works fine. However, I don't see how to ignore properties on a list type.
To get around this for now, I have had to write some code to clear these properties myself, but this is obviously not ideal.
for (var i = 0; i < results.MyList.Count; i++)
{
results.MyList[i].Id = Guid.Empty;
expectedResults.MyList[i].Id = Guid.Empty;
}
How can I accomplish this?
I've got the same question too, otherwise this is helping massively. Great library
results.WithDeepEqual(expected).IgnoreProperty(reader => reader.Name == nameof(ListItemType.Property) && reader.DeclaringType == typeof(ListItemType)).Compare()
Yes, as @markdakers says, IgnoreProperty takes a predicate which allows you to ignore any property on any type.
For clarity:
results.WithDeepEqual(expected)
.IgnoreProperty(p => p.DeclaringType == typeof(MyType) && p.Name == nameof(MyType.Id))
.IgnoreProperty(p => p.DeclaringType == typeof(MyType) && p.Name == nameof(MyType.Date))
.Assert()