どのようにユニットテストにファイルをアップロードするFormCollectionを受信する方法?
-
22-09-2019 - |
質問
私はユニットテストに次のような方法をしたいです
public ActionResult StoreFile(FormCollection form, string _paginaAtual)
{
Session["MySession"] = 1
if (Request.Files["uploadedFiles"] != null)
{
//do something about the file
}
return View()
}
これは、私の「SomeController.cs」コントローラクラス内だと、ユーザは簡単な入力タイプ=「ファイル」HTML入力ます。
でファイルを送信したときに、それが呼ばれますP.S:純粋主義者は注意してください:。私は、これは「純粋な」ユニットテストではありません知っている、私はテスト環境でメソッドを呼び出すと、それはシステムのデ望ましい変更を行うかどうかを確認したい。
は、すべての被験体における任意の光をありがとう リンクスます。
解決
彼らはMVCに始まり、System.Web.Abstractions名前空間を作成する前に
幸いにもASP.Netチームはこれについて考えました。それは、伝統的には、HttpWebRequestクラスのようなテストに不可能な静的なクラスをミラーベースクラスのシリーズです。
何がやりたいことは、それらの基底クラスの1つに依存しており、効果的にあなたのセッションを模擬するために、依存性注入の少しを行います。
HttpSessionStateBase _session;
public HttpSessionStateBase Session
{
get{
return _session ?? (_session = new HttpSessionStateWrapper(HttpContext.Current.Session));
}
set{
_session = value;
}
}
FormCollectionとして、あなたは、あなたが離れているHttpContextから1を作成することができるはずとして、それを嘲笑する必要はありません。 マーカスHammarbergのブログ。
他のヒント
あなたはより多くの統合テストのような音を記述しているもの。あなたはそれを隔離したい場合は、あなたのFormCollectionについては、あなたはそれのためにあなた自身のモックを「手ロール」をRhinoMocksのようなアイソレーションフレームワークを使用するか、または可能性があります。
所属していません StackOverflow