1

Unittest プロジェクトを最新バージョンの FluentAssertions (4.0.1) で更新しようとしていますが、API の変更によりテストがコンパイルされなくなりました。更新前はバージョン 3.4.1 を使用していましたが、次のコードをコンパイルして正常に動作しました。

このテストでは、クラスのインスタンスをシリアル化および逆シリアル化し、FluentAssertions を使用して 2 つのオブジェクトを比較します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 で動作するテストコードを更新するにはどうすればよいですか?

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 に答える