特定のコントローラーアクションを呼び出して、その中のコード、特にセッション変数をテストするにはどうすればよいですか?

サムジョリー

ASP.NET4.5でMVC5を使用しています

リファクタリングとテストを行うコードが多いため、特定のアクションに移動する方法を知る必要があるアプリケーション全体を実行せずに、特定のコントローラーアクションをデバッグしたいだけでなく、時間がかかります。

私はユニットテストを検討しましたが、デバッガーを使用する方が私が行っていることに適しているようです。

また、アクションコード内にセッション変数があります。

私が解決策に最も近いのは、ホームにラッパーアクションを設定することです。

    public ActionResult Tx()
    {
        return new MyApp.Areas.Area1.Controllers.OrderController().Index();
    }

次に、関連する名前空間、コントローラー、アクションをコピーして、関連するパラメーターとともに「Tx」アクションに貼り付けます。

これにより、特定のアクションに移動しなくても、関連するアクションが呼び出されます。私はHome / Txと呼んでいます。ただし、セッション変数コードでnull例外エラーが発生します。

Session["OrderID"]=null

アプリケーションから直接ナビゲートする場合、Session変数を使用したアクションのデバッグは正常に機能します。Home / Txを使用すると、それはまだDev Webサーバー上にあり、デバッグプロセス内にありますが、別のアクションがコントローラーを作成しているため、おそらく新しいコンテキストにいます。

1)私のアイデアがセッション変数で機能しない理由はありますか?

2)特定のコントローラーアクションを呼び出す方法について誰かがより良いアイデアを持っているなら、私はそれをいただければ幸いです。

ありがとう。

ジョンW

コントローラを使用する前に、コントローラでInitializeメソッドを呼び出す必要があります。次のようなものを試してください:

    var httpContext = new HttpContextWrapper(HttpContext.Current);
    var routeData = RouteTable.Routes.GetRouteData(httpContext);

    var controller = new MyApp.Areas.Area1.Controllers.OrderController(); 
    controller.Initialize(new RequestContext(httpContext, routeData)); 
    return controller.Index();

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ