2011-11-29 2 views
0

NUnit, MvcContrib.TestHelper 패키지를 사용하여 MVC3 사이트를 테스트하는 유닛에서 작업하고 있지만 테스트 메소드가 컨트롤러에 액세스 할 때 "객체 참조가 객체의 인스턴스로 설정되지 않았습니다"예외가 발생합니다. TryUpdateModel을 가지고 있습니다. 나는 시험을 통과하기 위해 무엇을해야하는지 모른다. 이걸 좀 도와주세요.단위 테스트 컨트롤러가

나는 또한 그것을 위해 코드를 제공하고있다 :

액션 컨트롤러에서 테스트 메소드 호출, 아래와 같습니다 :

public JsonResult AddPatient() 
    { 
     bool returnStatus; 
     string returnErrorMessage; 

     List<string> returnMessage; 

     PatientBLL patientBLL = new PatientBLL(); 

     Models.PatientViewModel patientViewModel = new Models.PatientViewModel();   

     TryUpdateModel(patientViewModel); 

     Patient patient = patientBLL.AddPatient(
      patientViewModel, 
      out returnMessage, 
      out returnStatus, 
      out returnErrorMessage); 

     patientViewModel.UpdateViewModel(patient, typeof(Patient).GetProperties()); 

     patientViewModel.ReturnMessage = returnMessage; 
     patientViewModel.ReturnStatus = returnStatus; 

     return Json(patientViewModel); 

    } 

아래 주어진 위의 작업을 호출하는 시험 방법을 :

[Test] 
    public void Test_AddPatient() 
    { 
     TestControllerBuilder builder = new TestControllerBuilder(); 

     string uniquePatientKey = GenerateUniqueID(); 

     builder.Form["MedicalID"] = uniquePatientKey; 
     builder.Form["SocialSecurityNumber"] = uniquePatientKey; 
     builder.Form["FirstName"] = "Khushi"; 
     builder.Form["LastName"] = "Maahi"; 
     builder.Form["AddressLine1"] = "ABCD"; 
     builder.Form["AddressLine2"] = "Technologies"; 
     builder.Form["City"] = "OOna"; 
     builder.Form["State"] = "UP"; 
     builder.Form["ZipCode"] = "98456-7329"; 
     builder.Form["PhoneNumber"] = "(425)882-8080"; 
     builder.Form["DateOfBirth"] = "10/28/1987"; 
     builder.Form["PatientDateOfBirth"] = "10/28/1987"; 
     builder.Form["EffectiveDate"] = "01/01/1995"; 
     builder.Form["PatientEffectiveDate"] = "01/01/1995"; 

     PatientController patientController = builder.CreateController<PatientController>(); 
     JsonResult jsonResult = (JsonResult)patientController.AddPatient(); 

     dynamic jsonData = jsonResult.Data; 
     string jsonMessage=Convert.ToString(jsonData.ReturnMessage); 
     Assert.AreEqual(jsonData.ReturnStatus, true); 
     Assert.Greater(jsonData.PatientID, 0); 


    } 

제게 문제에 대한 해결책을 제공해주십시오.

+0

이 테스트를 디버그 모드에서 실행하고 실제로 실패한 행을 알려 주면 도움이됩니다. Ctrl + R, Ctrl + T를 눌러 디버그 모드로 테스트를 실행합니다. – mattypiper

+0

그 작업을 시도했는데 디버그 모드가 Action from Test 메서드의 TryUpdateModel() 문에 도달하면이 오류가 발생합니다. – Nupur

답변