0

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

 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相关的信息。请帮助我如何模拟它或为我的方法编写测试用例。

4

1 回答 1

2

您可以使用依赖注入,然后将 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
}
于 2014-01-17T10:48:23.210 回答