欲单元测试类似下面的方法:

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隔离框架,或“手卷”你自己的模拟吧。

scroll top