2011-12-09 10 views
1


私は彼らの多くは参考になりました... MVCではモックについての多くの記事やブログを読んだが、私はまだいくつかの問題を持っている:モッキングのHttpContext(セッション)

  • このような問題の1つであることです私は、私のActionResultでセッションを使用する必要がありますが、私のテストでは、セッションにアクセスするとNullReferenceExceptionが発生します。このような

    public ActionResult Index() 
    { 
        if (Session["Something"] == null) 
        { 
        Session.Add("Something", <smth>); 
        } 
        else 
        { 
        Session["Something"] = <smth>; 
        } 
        return redirect to action("Index2"); 
    } 
    
  • 私のテストを見て:あなたはこのようなサイトからMVC-contrib TestHelper

    このサンプルなどのツールを使用することができます

    HomeController controller = new HomeController; 
    var result = controller.Index() as ViewResult; 
    Assert.AreEqual("Index2", result.ViewName); 
    

答えて

2

は、格納アクションをテストする方法を示していますセッションのフォーム値を投稿しました

[Test] 
public void AddSessionStarShouldSaveFormToSession() 
{ 
    TestControllerBuilder builder = new TestControllerBuilder(); 
    StarsController controller = new StarsController(); 
    builder.InitializeController(controller); 

    //note that this is assigned before the controller action. This simulates the server filling out the form data from the request 
    builder.Form["NewStarName"] = "alpha c"; 

    //this assumes that AddSessionStar takes the form data and adds it to the session 
    controller.AddSessionStar(); 

    Assert.AreEqual("alpha c", controller.HttpContext.Session["NewStarName"]); 
} 
+0

これは、セッション値を使用する手動テストです...私はすべてのActionResultをテストする必要があります。セッションはテストのポイントではありません。私はこのアクションが提供するルート(アクション\ビュー名)を取る必要があります...そして、私はnullref例外を持っています。私は、Nullオブジェクトではないセッションを使用するための非開始アクションを与えるメソッドが必要です – AkmecNurik

+0

@AkmecNurik TestHelperはこのNullReferenceの問題も解決し、TestControllerBuilderはMock実装を埋め込みます。 –

+0

が試行されます。ありがとう – AkmecNurik