System.Web.Abstractions:それは何の役に立つのでしょうか?
-
05-09-2019 - |
質問
...絶対に何もない?の
は、をASP.NETのWebフォーム用のパズルのどの部分を埋めるんと ASP.NET MVC のそれぞれ?
あなたは何とかそれはASP.NET、Webアプリケーションの両方の種類で使用できるようにSystem.Web.Abstractionsを使用するASP.NET *ベース・アプリケーションを作成できますか?
その場合、どのように彼らが戻ってASP.NET WebフォームにSystem.Web.Abstractionsのクラスをレトロフィットしたのですか?
あなたはそれはそれは、モックのためにすることができます使用することはできませんので、?
、名前空間からオブジェクトまで新しいことはできませんの のアップデート:私はのHttpContextと他のビルド - それはASP.NET-オブジェクトのテストに問題があることを知っていることを明確にされていないため申し訳ありません。しかし、いずれにせよ良い説明に感謝します。
解決
名前空間は、(HttpSessionStateなど)ASP.NETのコアクラスをラップするように設計されているタイプが含まれています。
何を、あなたは理由を知りたいですか?
これらのコアASP.NETクラスの多くは、それが不可能な彼らとあなたのコード間の依存関係を壊すすること、密封されたまたは静的されています。それはあなたが、それははるかに困難あなたのASP.NETのコードをテストすること、これらのコアの依存関係を模擬することはできませんを意味します。だから、代わりに直接コードで直接のHttpResponseを操作するには、= <のhref =「http://msdn.microsoft.com/en-us/library/system.web.httpresponsewrapper.httpresponsewrapper.aspx」のrelを経由して、それを操作します「noreferrer」> HttpResponseWrapper を、試験時間中に、あなたはスタブまたはHttpResponseオブジェクトの動作を制御するためにモックができます。
あなたはこれらのラッパーを作成する、または前にそれらの1または2を実装していることについて考えている場合は、、あなたがその名前空間に包ま作品の多くがあることを知っているだろう、と私、1のため、彼らはそれをやった嬉しいですます。
他のヒント
これは、モックのために確かにあります。 - のHttpContextは、モック(容易に)密閉されたクラスであるとすることができません。 HttpContextBaseを密封し、私はそれは方法がはるかに簡単にモック作り、仮想ありだと思います。
されていません :あなたはHttpContextBase(たとえば、Webフォームで使用するため)の新しいインスタンスアップすることはできませんが、、あなたは経由でインスタンスを取得することができます
var ctx = new HttpContextWrapper(HttpContext.Current);