我正在尝试使用最新版本的FluentAssertions(4.0.1)更新我的Unittest项目,但由于更改了API,我的测试不再编译。在更新之前,我使用的是版本3.4.1,并且以下代码已成功编译并运行。
测试序列化和反序列化类的实例,然后使用FluentAssertions比较两个对象,并使用设置排除用IgnoreDataMemberAttribute
修饰的属性。
var item = this.fixture.Create<CustomClass>();
var readObject = TestHelper.SerializeAndDeserializeObject(item);
readObject.ShouldBeEquivalentTo(item,
options => options.Excluding(
p => p.PropertyInfo.GetCustomAttributes(typeof(IgnoreDataMemberAttribute), true).Length != 0));
所以PropertyInfo
不再存在了,我必须使用ISubjectInfo
,但没有提供的属性(SelectedMemberInfo
等)可以帮助我,我的测试运行到绿色
我现在的问题是,如何更新我的测试代码,它是否适用于FluentAssertions 4.0.1?
答案 0 :(得分:4)
我们热衷于支持这两个领域以及属性和简化等效API,我们意外地删除了该选项。我需要想办法重新添加它。
答案 1 :(得分:2)
我已使用以下代码修复了我的unittest。现在他们又恢复了绿色
readObject.ShouldBeEquivalentTo(item,
options => options.Excluding(
p => p.SelectedMemberInfo.DeclaringType.GetProperty(p.SelectedMemberInfo.Name).GetCustomAttributes(typeof(IgnoreDataMemberAttribute), true).Length != 0));