比较集合流畅的断言应该都等同于同义词

本文关键字:等同于 同义词 断言 集合 比较 | 更新日期: 2023-09-27 17:55:16

>我正在使用流利断言来验证不同的测试对象

public class DTO
{
   public int Key {get; set;}
   public string Code { get; set; }
}
public class KeyDTO
{
   public int Id {get; set;}
   public string Code { get; set; }
}

注意:这不是代码的精确副本,原始 DTO 中有更多字段,但它们不是解释问题所必需的

正在创建一个函数来断言它们是相等的,我正在尝试使用流畅的断言来做到这一点。 我想不出一种方法可以说 Id 映射到密钥。

public void AssertDTOsAreEqual( List<DTO> orderedDTOs, List<KeyDTO> orderedKeys)
{        
    orderedDTOs.ShouldAllBeEquivalentTo(orderedKeys, o => o/*??*/)
}

注意:我知道作为替代方案,我可以通过压缩有序集合并比较每个属性来做到这一点,但对于更冗长的 DTO,这将很难为每个属性进行比较。

有谁知道一种方法可以在 ShouldAllBeEquivalentTo 中映射不同的属性。 或者也许是更好的方法来做到这一点?

比较集合流畅的断言应该都等同于同义词

不幸的是还没有。但这是我个人要添加的功能列表中的第一名。我希望能尽快得到一些时间。

subjectCollection.Should().AllBeEquivalentTo(expected)现在已经在FluentAssertions中实现:

https://fluentassertions.com/documentation/#collections-and-dictionaries

抱歉,我误读了这个问题。在当前版本的 FluentAssertions 中,我能想到的最好的方法是使用 Linq 的.Select投影预期的集合,并与新对象进行比较:

subjectCollection.Should().BeEquivalentTo(expectedCollection.Select(o => new { Id = o.Key }));