1

.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

これを達成するために流暢なアサーションを拡張する適切な方法を誰かに教えてもらえますか?

4

2 に答える 2

2

次の 2 つのオプションがあります。

  1. ラムダ式をサポートし、SubjectProperties プロパティを使用して実際のプロパティにアクセスする PropertyInfoAssertions の拡張メソッドを作成します。
  2. GitHubでリポジトリをフォークし、フレームワークに直接追加します。プルリクエストを受け付けます。
于 2013-09-09T06:27:28.377 に答える
0

One possible answer is to wait a while and then get the latest version, as this issue seems to have been fixed recently :)

http://fluentassertions.codeplex.com/workitem/12455

于 2013-09-08T20:57:41.597 に答える