我正在使用以下方法通過ASP.NET Web API控制器上傳文件。單元測試ASP.NET Web API控制器假冒HTTPContext
[System.Web.Http.HttpPost]
public HttpResponseMessage UploadFile()
{
HttpResponseMessage response;
try
{
int id = 0;
int? qId = null;
if (int.TryParse(HttpContext.Current.Request.Form["id"], out id))
{
qId = id;
}
var file = HttpContext.Current.Request.Files[0];
int filePursuitId = bl.UploadFile(qId, file);
}
catch (Exception ex)
{
}
return response;
}
在我的單元測試,我調用UploadFile
行動之前手動創建一個HTTPContext
類:
var request = new HttpRequest("", "http://localhost", "");
var context = new HttpContext(request, new HttpResponse(new StringWriter()));
HttpContext.Current = context;
response = controller.UploadFile();
不幸的是,我沒能自定義值添加到收藏Form
,因爲它是隻讀。此外,我無法更改Files
集合。
是否有任何方法可以在單元測試期間向Request
的Form
和Files
屬性添加自定義值以添加所需的數據(標識和文件內容)?
謝謝您的答覆。 由於我們使用web.api控制器,我們需要使用HttpControllerContext而不是ControllerContext。 HttpControllerContext不允許在構造函數HttpContextBase中傳遞。 –
只是想知道爲什麼這是高調Pylyp Lebediev說是真實的... – rlee923