我正在集成测试中创建两个相同类型的对象,但是试图排除在对象创建时生成的自动增量成员。
我成功排除了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)
);
消息:预期成员ID为“ 45”,但“ 46”在“ 6”附近有所不同 (索引1)。
具有配置: -使用声明的类型和成员
- 按值比较枚举
- 排除成员root.RecordId
- 排除成员root.Id
- 排除成员root.Number
- 按名称匹配成员(或抛出)
- 没有自动转换。
- 请严格遵守字节数组中的项目顺序
我也尝试使用WithTracing()选项运行,但是它没有提供有关该属性的信息。
我已阅读文档,但未发现任何指示不能排除抽象或虚拟属性的信息,我错了吗?
我已经在5.5.0和5.5.3版本上尝试过,结果相同。
编辑:
我已经检查并再次检查了该类或其继承的类都不等于。
答案 0 :(得分:0)
我看到了这一点,我的对象被audioPlay.PlayAudio
覆盖了,但是我并不期望Equals(object obj)
函数会被实现。
我认为BeEquivalentTo
会通过对象图吗?