gpt4 book ai didi

c# - 流利的断言 Should().Should().BeEquivalentTo 忽略被排除的成员

转载 作者:太空宇宙 更新时间:2023-11-03 14:47:30 30 4
gpt4 key购买 nike

我正在集成测试中创建两个相同类型的对象,但试图排除在创建对象时生成的自动递增成员。

我成功排除了 RecordId 和 Number 属性,但对 Id 属性的等效性测试失败。 RecordId 和 number 属性继承自抽象类,但 Id 不同,它是继承自抽象类的抽象属性,然后被重写。

Id 属性是一个抽象的字符串属性,并且是只读的。

//CreateJob creates indentical jobs, but with autoincremented id, number and recordid   
Job job1 = CreateJob();
Job job2 = CreateJob();

job1.Should().BeEquivalentTo(job2, config => config
.Excluding(o => o.RecordId)
.Excluding(o => o.Id)
.Excluding(o => o.Number)
);

Message: Expected member Id to be "45", but "46" differs near "6" (index 1).

With configuration: - Use declared types and members

  • Compare enums by value
  • Exclude member root.RecordId
  • Exclude member root.Id
  • Exclude member root.Number
  • Match member by name (or throw)
  • Without automatic conversion.
  • Be strict about the order of items in byte arrays

我也尝试使用 WithTracing() 选项运行,但它没有提供有关该属性的信息。

我已经阅读了文档,但没有发现任何表明不应该排除抽象或虚拟属性的内容,我错了吗?

我已经在 5.5.0 和 5.5.3 版本上尝试过,结果相同。

编辑:

我已经检查并仔细检查了类或它继承的类都没有覆盖等于。

最佳答案

我看到了这一点,我的对象覆盖了 Equals(object obj) 但我没想到 BeEquivalentTo 函数会受到影响。

我以为 BeEquivalentTo 会遍历对象图?

关于c# - 流利的断言 Should().Should().BeEquivalentTo 忽略被排除的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53539556/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com