如何使用“DebuggerDisplay”在错误消息中包含对象摘要

问题描述 投票:0回答:1

我有一个类(

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
的方法?

c# unit-testing fluent-assertions
1个回答
0
投票

您可以简单地将字符串定义为调试器显示的参数:

...
[DebuggerDisplay("{A}-{B}-{C}")]
public class MyData {
...
© www.soinside.com 2019 - 2024. All rights reserved.