2011-01-04 7 views
3

ライフスタイルが "PerWebRequest"であるタイプに依存するコントローラのユニットテストを作成しようとしています。PerWebRequest LifeStyle依存のユニットテストコントローラ

のSystem.InvalidOperationException:HttpContext.Currentがnull

城には、次の例外がスローされます。 PerWebRequestLifestyleはASP.Netでのみ使用できます。

この問題を回避するためにHttpContext.Currentプロパティをどうやって模擬することができますか?

MVCContribのTestControllerBuilderを使用してこのコントローラを初期化しようとしましたが、効果がありません。

SymptomTopicController controller = new SymptomTopicController(); 
     controller.WorkOrderFulfillment = workOrderFulfillment; 

     TestControllerBuilder controllerBuilder = new TestControllerBuilder(); 
     controllerBuilder.InitializeController(controller); 

答えて

7

You're doing it wrong

抽象依存し、あなたのテストでコンテナを使用しないでください。

+1

依存関係は抽象化されています。コントローラーの依存関係は注入によって解決されます。問題は、単体テストの記述方法ではなくHTTPContextを模擬する方法です。 – Nick

+0

依存関係は明らかに抽象化されていません(十分)。コントローラにはHTTPContextを使用する必要はありませんでした。なぜなら、コントローラはそれに強く依存しないし、記述する方法もあなたの場合であり、抽象化されていないということです。 –

関連する問題