47

ASP.NET MVC ソリューションをテスト駆動の方法で使用しており、フォーム認証を使用してアプリケーションにユーザーをログインさせたいと考えています。コントローラーで最終的にやりたいコードは次のようになります。

FormsAuthentication.SetAuthCookie(userName, false);

私の質問は、このコードを正当化するためのテストをどのように作成すればよいですか?

SetAuthCookie メソッドが正しいパラメーターで呼び出されたことを確認する方法はありますか?

偽/モック FormsAuthentication を注入する方法はありますか?

4

1 に答える 1

68

まず、このロジックをカプセル化するインターフェイスとラッパー クラスを作成し、コントローラーでインターフェイスを使用します。

public interface IAuth 
{
    void DoAuth(string userName, bool remember);
}

public class FormsAuthWrapper : IAuth 
{
    public void DoAuth(string userName, bool remember) 
    {
        FormsAuthentication.SetAuthCookie(userName, remember);
    }
}

public class MyController : Controller 
{
    private readonly IAuth _auth;

    public MyController(IAuth auth) 
    {
        _auth = auth;
    }

}

IAuth単体テストで簡単にモックして、コントローラーが期待されるメソッドを呼び出すことを確認できるようになりました。クラスの単体テストは行いません。これは、本来FormsAuthWrapperの処理を実行する呼び出しを に委譲するだけだからです (Microsoft の保証:-))。FormsAuthentication

于 2008-12-14T11:20:11.813 に答える