Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I exclude a property of all items in IEnumerable when using ShouldBeEquivalentTo?

In my NUnit/FluentAssertions tests I compare the complex object returned from my system with a reference one using the following code:

    response.ShouldBeEquivalentTo(reference, o => o.Excluding(x => x.OrderStatus)
                                               .Excluding(x => x.Id)
                                               .Excluding(x => x.Items[0].Name)
                                               .Excluding(x => x.Items[0].Article)
                                               .Excluding(x => x.ResponseStatus));

However, this is not exactly what I intended. I'd like to exclude Name and Article for every object in Items list and not only for the 0th. How do I implement this scenario?

I've looked through the documentation and din't find the solution. Am I missing something?

like image 436
kojo Avatar asked Mar 12 '13 12:03

kojo


1 Answers

There's an overload of Excluding() that provides an ISubjectInfo that you can use for more advanced selection criteria. With that overload, you can do stuff like:

subject.ShouldBeEquivalentTo(expected, config =>
                config.Excluding(ctx => ctx.PropertyPath == "Level.Level.Text"));
like image 198
Dennis Doomen Avatar answered Sep 22 '22 17:09

Dennis Doomen