【发布时间】:2016-06-29 19:52:07
【问题描述】:
为了说明问题,请考虑以下三个类:
class Orange
{
public String color { get; set; }
}
class Foo
{
public Int32 size { get; set; }
public Orange orange { get; set; }
}
class Bar
{
public Int32 size { get; set; }
public Orange orange { get; set; }
}
如果我创建 Foo 和 Bar 的实例,并将它们的 Orange 实例设置为不同,然后进行断言(不使用“包含”),则断言按预期工作;它找到了“red”和“bff”之间的区别:
Foo foo = new Foo() { size = 3 };
foo.orange = new Orange() {color = "red" };
Bar bar = new Bar() { size = 3 };
bar.orange = new Orange() { color = "bff" };
foo.ShouldBeEquivalentTo(bar); // assertion fails, as expected
但是,如果我做同样的断言,同时通过“包含”明确告诉 FluentAssertions 要比较什么,断言不会捕捉到 Orange 的差异:
foo.ShouldBeEquivalentTo(bar, options => options
.Including(o => o.size)
.Including(o => o.orange)
); // assertion does not fail, why?
【问题讨论】:
-
我想我可能已经回答了我自己的问题 - 我想我需要这样做:.Including(o => o.orange.color)
-
你用的是什么版本?
-
4.2.2 我的“修复”(即 o.orange.size)似乎适用于简单的情况。但是在我弄清楚之后,我想使用包括来断言一个包含对象数组的字段..并且断言对此不起作用。这可能与我尝试包含数组的方式有关:.Including(o => o.my_object.arraylist[0].field_of_interest)。我认为输入 [0] 感觉不对,但这是我编译它的唯一方法
标签: c# .net fluent-assertions