FluentAssertions: Assert Collection contains Element that "IsEquivalentTo"

Matthias picture Matthias · Jun 29, 2017 · Viewed 7.9k times · Source

I'm stuck with what I thought was an easy example. I want to assert that a collection of objects contains an object that is equivalent to a given object. like: col.ShouldContainEquivalentTo(obj)

var objectList1 = new List<SomeClass> { new SomeClass("A"), new SomeClass("B"), new SomeClass("C") };
var objectList2 = new List<SomeClass> { new SomeClass("C"), new SomeClass("B"), new SomeClass("A") };

objectList1.ShouldAllBeEquivalentTo(objectList2); //this works
objectList2.ShouldContainEquivalentTo(new SomeClass("B")); //method does not exist. How can I achieve sthg like that

I want to compare based on the objects values - just like how ShouldBeEquivalentTo and ShouldAllBeEquivalentTo work. Should not be necessary to write my own equality comparer.

BR Matthias

Answer

Matthias picture Matthias · Jan 12, 2019

I finally had the time to implement this feature and it is now available with version 5.6.0 of FluentAssertions.

This now works!

var objectList = new List<SomeClass> { new SomeClass("A"), new SomeClass("B"), new SomeClass("C") };
objectList.Should().ContainEquivalentOf(new SomeClass("A"));

BR Matthias