6

そのプロファイルの所有者だけがアクセスできるプロファイルページがあるとします。このプロフィールページは次の場所にあります。

ユーザー/プロファイル/{userID}

ここで、他のユーザーによるこのページへのアクセスを防ぐために、UserControllerクラスのProfile関数を構造化して、現在のセッションのIDを確認できると思います。

HttpContext.Current.User.Identity.Name

IDがURLのIDと一致する場合は、次に進みます。それ以外の場合は、ある種のエラーページにリダイレクトします。

私の質問は、このようなものをどのようにユニットテストするのですか?コントローラーでHttpContextの代わりに何らかの依存性注入を使用してチェックを行う必要があると思いますが、それを行うための最良の方法がわかりません。どんなアドバイスも役に立ちます。

4

4 に答える 4

1

コントローラーコンテキストに偽物を使用することで、おそらくそれを行うことができます。この記事をチェックしてください: http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx

于 2008-09-25T10:51:06.703 に答える
1

最終的には、Kazi Manzur のブログ投稿に示されている「UserNameFilter」を使用しました。魅力的に機能し、単体テストが簡単です。

于 2009-09-01T00:56:11.743 に答える
1

上記のリンクは良いものです。また、プログラムで User.Identity.Name の値をチェックする代わりに、記事で概説されているように Authorize 属性を使用する必要があることも付け加えておきます。

http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx

于 2008-10-01T14:43:10.113 に答える
0

これが、偽の HttpContext を使用したモックの出番です。

于 2009-09-01T01:05:07.097 に答える