Иногда мне приходится утверждать, что два списка содержат одинаковые элементы. С плавными утверждениями это можно сделать следующим образом:
class MyObject { public string MyString {get; set;} }
var o1 = new MyObject { MyString = "1 " }
list1.Add(o1);
var o2 = new MyObject { MyString = "1" }
list2.Add(o2);
list1.Should().BeEquivalentTo(list2)
Но иногда я хочу, чтобы конкретное свойство c сравнивалось другим способом, например:
list1.Should().BeEquivalentTo(list2, options => options
.Using<string>(context => context.Subject.TrimEnd().Should().Be(context.Expectation))
.When<string>( ??????? ));
I пробовали:
it => it.SelectedMemberInfo.Name == PropertyNameHere
Но SelectedMemberInfo может быть нулевым, и он выдает исключение, когда null, и я не знаю, правильно ли я его называю.
Обновление 1: Пробовал, но исключение нулевой ссылки:
options => options
.Using<DateTime>(it => it.Subject.Should().BeCloseTo(DateTime.Now, TimeSpan.FromMinutes(1)))
.When(it =>
it != null
&& it.SelectedMemberInfo != null
&& it.SelectedMemberInfo.Name == nameof(Y.X)));