模拟httpcontext.current.request.files

时间:2014-01-17 10:40:17

标签: c# httpcontext nunit-2.5.9

我正在为我的一个名为 UploadFile()的方法实现nUnit Test案例,如下所示

 public void UploadFile(string siteId, string sitePageId)
 {
    int fileCount = HttpContext.Current.Request.Files.Count;

    //Rest of code
 }

所以基本上我正在使用 HttpContext.Current.Request.Files 来阅读文件。 从UI它工作正常,但当我为它实现nUnit测试用例时,我无法模拟 HttpContext.Current.Request.Files 。我搜索了一些模拟工具,但我也没有得到任何与模拟 HttpContext.Current.Request.Files 相关的内容。请帮我如何模拟它或为我的方法编写测试用例。

1 个答案:

答案 0 :(得分:0)

您可以使用依赖注入,然后将HttpContextBase的实例注入到类中。假设你正在使用MVC:

public class MyController : Controller
{

    HttpContextBase _context;        

    public MyController(HttpContextBase context)
    {
        _context = context
    }

    public void UploadFile(string siteId, string sitePageId)
    {
        int fileCount = _context.Request.Files.Count;

        //Rest of code
    }
}

现在,您可以使用HttpContextBase的模拟实例化控制器。这就是你用Moq做的事情:

[Test]
public void File_upload_test()
{
    var contextmock = new Mock<HttpContextBase>();
    // Set up the mock here
    var mycontroller = new MyController(contextmock.Object);
    // test here
}