1

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

SoPropertyInfo不再存在,我必须使用ISubjectInfo,但是没有提供的属性(SelectedMemberInfo等)可以帮助我使我的测试运行为绿色。

我现在的问题是,如何更新我的测试代码,它适用于 FluentAssertions 4.0.1?

4

2 回答 2

4

由于我们热衷于支持这两个字段和属性并简化等效 API,我们不小心删除了该选项。我需要想办法重新添加它。

于 2015-11-22T17:58:06.943 回答
2

我已经用以下代码修复了我的单元测试。现在他们又回到了绿色

readObject.ShouldBeEquivalentTo(item, 
  options => options.Excluding(
    p => p.SelectedMemberInfo.DeclaringType.GetProperty(p.SelectedMemberInfo.Name).GetCustomAttributes(typeof(IgnoreDataMemberAttribute), true).Length != 0));
于 2015-11-23T07:05:25.020 回答