2014-11-13 5 views
1

템플릿을 만들기위한 컨트롤러가 있습니다. 이 컨트롤러는 템플릿 모델을 매개 변수로 사용합니다. 컨트롤러에는 파일 업로드를위한 코드가 들어 있습니다.파일 업로드 단위 테스트

: 이것은 내 컨트롤러

public ActionResult Create(Template template) 
{ 
    if (ModelState.IsValid) 
      { 
       var file = Request.Files["FileName"]; 
       template.FileName = template.TemplateName; 

       long TemplateId = _templateService.Create(template); 
       string path = Server.MapPath("~/Templates/Archieve/" + TemplateId); 
       Directory.CreateDirectory(path); 
       string archievePath = Server.MapPath("~/Templates/Archieve/" + TemplateId + "/" + "Template" + TemplateId + ".zip"); 

       file.SaveAs(archievePath); 
       using (ZipFile zip = ZipFile.Read(archievePath)) 
       { 
        zip.ExtractAll(Server.MapPath("~/Templates/" + TemplateId), ExtractExistingFileAction.DoNotOverwrite); 

       } 

       return RedirectToAction("Index"); 
} 

입니다

public class Template 
{ 
    public string TemplateName {get; set;} 
    public string Description {get; set;} 
    public string FileName {get; set;} 
} 

이 내 단위 테스트입니다 :

내 모델이 얼마나 단위 시험이 코드 ...에 이해가 안 돼요
public void Create_Template() 
{ 
    //Arrange 
    var template = new Template() 
       { 
        Description = "Description", 
        FileName = null, 
        TemplateName = "name" 
       }; 

       //Act 
       var result = controller.Create(template) as RedirectToRouteResult; 

       //Assert 
       Assert.AreEqual("index", result.RouteValues["action"]); 
} 

단위 테스트 방법 Request.Files [FileName] 및 Server.MapPath

+0

Request.Files [ "FileName"]에 문제가 있으면 코드가 예외로 처리되며 Assert가 실패합니다. – Ishtiaq

+0

예, 테스트 실행 중 예외가 있습니다. Request.Files [ "FileName"] "코드에 도달하면 테스트를 디버깅 할 때 예외가 발생합니다."개체 참조가 개체 인스턴스로 설정되지 않았습니다. "그리고이 문제를 해결하는 방법은이 예외를 해결하는 방법입니다. @Ish – Ruchi

답변

0

HttpContext에 모의 객체를 사용해야합니다.
자세한 내용은 LINK을 참조하십시오.