I am writing some unit tests using specflow and need a way to check whether a list of objects is ordered by a specific property. Currently I am doing it like this, but I am not sure if this is the best way to go about it.
var listFromApi = listOfObjects;
var sortedList = listFromApi.OrderBy(x => x.Property);
Assert.IsTrue(listFromApi.SequenceEqual(sortedList));
Is there a nice way this can be done using Fluent Assertions?
Yes. You can use BeInAscendingOrder
with a lambda.
listFromApi.Should().BeInAscendingOrder(x => x.Property);
For extra clarity at the expense of performance, you can also assert on content equivalence:
listFromApi.Should().BeEquivalentTo(listOfObjects)
.And.BeInAscendingOrder(x => x.Property);
It is possible to pass the options like:
listFromApi.Should().BeEquivalentTo(sortedList, opt => opt.WithStrictOrdering());
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With