Asp.net-Mvc
如何對 Asp.net MVC 文件進行單元測試
您好,我是 TDD 開發的新手。
我遇到了這篇使用 asp.net mvc 上傳文件
的文章 Phil Haack 指出一個類可以用於文件上傳控制,他在其中使用預設的 HttpFileCollectionValueProvider:[HttpPost] 公共 ActionResult 索引(HttpPostedFileBase 文件){ if (file.ContentLength > 0) { var fileName = Path.GetFileName(file.FileName); var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 文件.另存為(路徑); } return RedirectToAction("索引"); }該值的範圍為
<form action="" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <input type="submit" /> </form>請注意,HttpPostedFileBase 被解析為 html 表單中名稱為“file”的控制器中的參數,以及索引控制器中的解析參數。
我有兩個問題:
如何驗證 file.SaveAs 方法?
我不太確定如何對此進行單元測試。在測試控制器文件中,我應該有一個假的 HttpPostedFileBase 但它是密封的。有沒有人有一些策略來解決這個問題?
非常感謝!
如果這不是您所要求的,我深表歉意,但我會在您的測試中簡單地模擬 HttpPostedFileBase:
var file = MockRepository.GenerateStub<HttpPostedFileBase>();然後設定任何期望:
file.Expect(f => f.ContentLength).Return(1); file.Expect(f => f.FileName).Return("myFileName");然後將其傳遞給您的控制器方法:
controller.Index(file);這樣您就可以模擬文件的行為。我不確定 .SaveAs - 你重寫了這個方法嗎?