2014-01-17 39 views
0

我實現NUnit測試案例我的方法之一調用,UploadFile(),有些東西像下面模擬httpcontext.current.request.files

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有關的東西。請幫助我如何模擬它或爲我的方法編寫測試用例。

回答

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實例化控制器。這是你會怎麼用起訂量做到這一點:。

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

我不使用MVC :( – Popeye

+0

同樣的概念也適用於Web表格,也可使用構造函數注入你只需要仰望如何設置你的DI容器。我在MVC中做了這個例子,只是作爲一個例子 – Kenneth

+0

坦白說,我沒有得到如何設置模擬,只是拿任何文件的例子,你會爲我寫代碼 – Popeye