1

asp.net と mvc、より具体的には MVC 5 の web-api (2.0) 部分に足を踏み入れると、属性を使用し、独自の属性クラスを作成して、要求の処理方法とすべての API エンドに対して返される応答を制御するというアイデアが気に入っています。 -ポイント。

特定のロールのみが MVC のコントローラーにアクセスできるようにする必要があることをテストする方法」の記事では、単一のコントローラーを単体テストして、正しい属性を保持し、望ましくない属性が追加されないようにする方法について説明しています。

これは、個々のコントローラーを単体テストするための完全に有効な方法です。ただし、個々のコントローラーの単体テストに分散するのではなく、API 構成のすべてのテストを 1 つの場所に配置することを好みます。特に、属性ルーティングを使用すると、コントローラーは、正しい属性を持たない可能性があり、テスト コンパニオンがそれらをテストしない別のコントローラーに非常に簡単に置き換えることができます。

私が思い描いているのは、API 構成のすべての側面を (不注意による) 変更による望ましくない影響から保護できる単一のテスト クラスです。私が苦労しているのは、これを設定する方法です。Bryan Avery の記事 (上記) には、コントローラー クラスのカスタム属性のリストを取得する方法が示されていますが、次のようになります。

テスト プロジェクトに存在するすべてのコントローラーのリストを取得するにはどうすればよいですか?

4

2 に答える 2

3

リフレクションはここであなたを助けるはずです:

var myControllers = Assembly.Load(yourAssemblyName)
    .GetTypes()
    .Where(t => typeof(t).IsAssignableFrom(ApiController))
    .ToList();
于 2013-08-23T18:55:52.350 に答える