如何单元测试,其接收的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 .:纯粹主义者小心:我知道这是不是一个“纯”的单元测试,我只是想调用在测试环境中的方法,并检查是否它使系统中的去期望的变化
感谢您所有的任何光在受试者, 山猫。
解决方案
幸运的是ASP.Net团队想过这个,他们开始对MVC之前创建的System.Web.Abstractions命名空间。它是一系列反射镜是不可能测试传统像HttpWebRequest类的静态类的基类。
您想要做的是依靠这些基类中的一个,做依赖注入的一点点,以便有效地嘲笑你会是什么。
HttpSessionStateBase _session;
public HttpSessionStateBase Session
{
get{
return _session ?? (_session = new HttpSessionStateWrapper(HttpContext.Current.Session));
}
set{
_session = value;
}
}
对于的FormCollection,你不必嘲笑它,你应该能够从HttpContext的除了创建一个。还有就是,关于马库斯尔贝格的博客一个很好的例子>
其他提示
你描述更像集成测试声音。至于你的FormCollection,如果你想将其隔离,你可以使用像RhinoMocks隔离框架,或“手卷”你自己的模拟吧。
不隶属于 StackOverflow