私は、HttpContextBaseを継承し、私のコントローラに注入されるオブジェクトを作成して、asp.net mvcコードを単体テストしています。それは素晴らしい作品のURL、リファラ、ユーザーエージェント、クッキーなど: フェデレーションID:テスト目的でhttpContextを挿入する方法は?
myfooController.ControllerContext.HttpContext = new FakeHttpContext();
こうすることによって、私はasp.netのproperiesの多種多様を模擬することができます。
私は、RelyingPArty署名リクエストをデコードし、適切に処理するFederatedIdentityコントローラをカバーするための単体テストを作成しています。私のFakeHttpContextは、nullサインインリクエスト、悪い共有シークレットなどのさまざまなシナリオをテストできます。
私たちの現在のWIFプロジェクトでは、静的クラスFederatedAuthentication.SessionAuthenticationModule.CookieHandlerを呼び出してクッキーを行う必要がありますもの。
私のユニットテストでこれを行うと、HttpContext.Currentがnullであるため、爆発します。 SessionAuthenticationModuleはHttpContext.Currentを使用するように見えますが、私の偽のコンテキストに設定することはできません。 HttpContext.CurrentはHttpContextBaseから継承しないので、関連するプロパティを設定して、有用なテストを行うことはできません。
2011年、マイクロソフトの誰かが、完全に完全にユニットテスト可能ではない非常に重要な認証コードを作成したと私は結論づけましたか?本当に?
コアの問題が解決されたわけではありませんが、SelfSTSは束のテストに役立ちます。 –