我有一个类(
MyData
),具有多个属性(A
、B
、C
)。该类没有重写的 ToString
并且由于其他原因它不能有一个,但它有一个方法 ToDebugString()
,也可以使用 配置为“调试器显示”。
[DebuggerDisplay(nameof(ToDebugString))]
public class MyData {
public string A {get;set;}
public string B {get;set;}
public string C {get;set;}
public string ToDebugString() => $"{A}-{B}-{C}";
}
我有一个此类对象列表的断言,如下所示:
var items = new MyData[] { ... };
items.Should().Contain(i => i.A == "foo");
失败时,会显示如下错误消息:
Expected items
{
MyProject.MyData
{
A = "a1",
B = "b1",
C = "c1"
}
} to have an item matching (i.A == "foo"). (0.2s)
这非常冗长,特别是如果列表中有很多项目。
当我定义
ToString
方法时,它由 FluentAssertions 使用,并且输出更加简洁,但我不能为类这样做。
我的问题是如何配置 FluentAssertions 以使用我的
ToDebugString
方法来记录对象,或者有没有办法通常使用配置为 DebuggerDisplay
的方法?
您可以简单地将字符串定义为调试器显示的参数:
...
[DebuggerDisplay("{A}-{B}-{C}")]
public class MyData {
...