4

ASP.NETMVPパターンについて質問があります。プレゼンターはセッション値を認識できますか?セッション値の使用を開始した場合、セッションに対してそれをモックまたはテストする方法がわかりません。また、Winフォームに同じプレゼンターを使用した場合はどうなりますか。これは正しい考えですか?もしそうなら、セッション値を処理するための私のオプションは何ですか?

4

2 に答える 2

3

プレゼンターは、Sessionオブジェクト(またはSystem.Webの他のオブジェクト)を認識してはなりませんが、ビューを介してセッションデータを公開すると、値を認識できます。

MVPを使用すると、次のようなビューが得られます。

public interface IViewCustomerView
{
    ShoppingCartModel ShoppingCart {get;set}
}

ビューのWebフォーム実装では、ShoppingCartはセッションから取得されます。

public partial class ViewCustomers : Page, IViewCustomerView

ShoppingCartModel ShoppingCart 
{
    // add null/cast checks etc. here
    get { return (ShoppingCartModel) Session["Cart"]; } 
    set { Session["Cart"] = value; }
}

Webフォームと模擬実装では、他の場所から取得できます。次に、プレゼンターでショッピングカートにアクセスすると、それがセッションからのものであることがわかりません。

IViewCustomerView _view;

_view.ShoppingCart...
于 2012-05-24T16:39:09.053 に答える
2

MVPビットについてはよくわかりませんがISessionState、何かから値を設定/取得する機能を持つようなインターフェイスを作成できます。Webサイトでは、これは実際のオブジェクトに対して読み取り/書き込みを行いSessionますが、テストでは、セッションを使用するふりをするモックオブジェクトを作成します。

ISessionStateこの依存関係を抽出したら、プレゼンターやその他の必要なものに実装を簡単に挿入できるはずです。

于 2012-05-24T15:21:24.893 に答える