更新到最新的FluentAssertions会破坏我的单元测试

时间:2015-11-19 12:37:58

标签: c# fluent-assertions

我正在尝试使用最新版本的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?

2 个答案:

答案 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));