单元测试Controller时得到NullReferenceException

时间:2011-11-29 14:00:34

标签: asp.net-mvc-3 nunit mvccontrib-testhelper

我正在使用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);


    }

请给我解决我的问题。

1 个答案:

答案 0 :(得分:0)

您在patientViewModel中的某处有一个null。你能在这里发布这种类型吗?这可能是problem with mixing models and view models