【发布时间】:2020-09-16 01:32:09
【问题描述】:
有时我必须断言两个列表具有相同的项目。使用流利的断言可以这样做:
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)
但有时我希望以不同的方式比较特定属性,例如:
list1.Should().BeEquivalentTo(list2, options => options
.Using<string>(context => context.Subject.TrimEnd().Should().Be(context.Expectation))
.When<string>( ??????? ));
我试过了:
it => it.SelectedMemberInfo.Name == PropertyNameHere
但是 SelectedMemberInfo 可以为 null 并且当为 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)));
【问题讨论】:
-
你能提供一个Minimal Complete Example 你想要达到的目标吗?
-
您能具体说明我的问题中缺少什么吗?我觉得很容易理解
-
在这种情况下,我不清楚
list1和list2是。如果您提供完整的示例,我可以将其复制/粘贴到 IDE 中并运行。 -
已编辑问题
标签: c# .net testing fluent-assertions