当前位置: 首页 > 知识库问答 >
问题:

所有断言都应该等同于同义词

羿经武
2023-03-14

我使用流畅的断言来验证不同的测试对象

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来说,这将很难对每个属性进行比较。

有没有人知道一种在ShouldallbeeEquivalento中映射不同属性的方法。或者是一种更好的方法?

共有2个答案

池赞
2023-03-14

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

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

  
 

牧飞鹏
2023-03-14

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

 类似资料:
  • 我们正在用Spring Boot开发一个REST服务,并陷入了困境,想知道是否每个错误响应都应该具有相同的JSON结构? 对于错误情况,我们的服务使用简单的JSON格式进行响应。例如,如果参数格式错误,我们将以HTTP状态和JSON响应: 是我们的自定义代码id。人们可能会争论这种设计是否好,但它很简单,服务消费者可以轻松处理。 现在,Spring Boot会自动创建一些错误响应。例如,对于一个和

  • 为什么单子里的牌都一样?我尝试了,但输出仍然相同。 Main.java 产出: Lorem ipsum dolor sit amet,consectetur adipiscing Elit。Aenean nisl.curabitur ac arcu ornare,aliquet eros eu,pretium massa.

  • 问题内容: 我有一个使用的脚本,但没有使用jQuery中的其他任何脚本。我想通过删除jQuery依赖项来减轻它的负担。 如何在不使用jQuery的情况下实现自己的功能?我知道使用会有所不同,因为在加载所有图像,帧等之后会触发。 问题答案: 有一个基于标准的替代品,尽管IE8不支持,但超过98%的浏览器都支持它: jQuery的本机功能比window.onload复杂得多,如下所示。

  • 问题内容: 在PHP中可以做到。在JavaScript中,您通常会使用相同的方法,但这并不完全相同。如果确实存在,但条件是或(或可能还有其他值),则条件也将评估为false 。 JavaScript 中PHP的完美替代品是什么? 从更广泛的意义上讲,有关JavaScript处理不存在的变量,没有值的变量等的通用完整指南会很方便。 问题答案: 我通常使用运算符: 如果该属性不存在或其值是,它将返回。

  • 问题内容: 我正在尝试编写一个HQL查询,该查询将计算项目的平均评分。当给定项目没有评分时,我希望查询返回0而不是null- 这样我就可以将查询用作子查询。那有可能吗?是否有与IFNULL或NVL等效的HQL? 问题答案: COALESCE 是官方的等效方法。 它返回其参数的第一个非null。 例: 链接维基百科

  • 问题内容: 我发现以下两项工作: 所有Python类都应该扩展对象吗?不扩展对象是否存在任何潜在问题? 问题答案: 在Python 2中,不继承自将创建一个旧式类,除其他效果外,该类还会产生不同的结果: 与 同样,多重继承的规则也有所不同,在这里我什至不尝试总结。我所见过的有关MI的所有好的文档都描述了新型类。 最终,旧式类在Python 3中消失了,并且继承自隐式了。因此,除非您需要与旧软件向后