.NET FluentAssertionsライブラリ (バージョン 2.1.0) にはBeDecoratedWith<T>()
、型 (または型メンバー) に特定の属性が適用されていることをアサートするための実装がいくつかあります。これらの呼び出しは次のようになります。
typeof(X).Should()
.BeDecoratedWith<SomeAttribute>(attr => attr.Name == expectedValue);
Name
ラムダ式は、属性がsome と等しいことをアサートしますexpectedValue
。
これはsut
、 が型の場合は優れていますが、メンバーの場合はBeDecoratedWith<T>
、ラムダ式を取るオーバーロードはありません。
// compiler error: Cannot convert lambda expression to type 'string' because it is not a delegate type
typeof(X).GetProperty("xyz").Should()
.BeDecoratedWith<SomeAttribute>(attr => attr.Name == expectedValue);
ドキュメントは拡張性をすばやくカバーしていますが、上記のようなラムダを受け入れるクラスのオーバーロード (または拡張メソッド)BeDecoratedWith<T>
を作成する方法を理解するのに苦労しています。PropertyInfoAssertions
これを達成するために流暢なアサーションを拡張する適切な方法を誰かに教えてもらえますか?