【问题标题】:Got NullReferenceException when Unit testing Controller单元测试控制器时出现 NullReferenceException
【发布时间】:2011-11-29 14:00:34
【问题描述】:

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


    }

请为我的问题提供解决方案。

【问题讨论】:

  • 如果您在调试模式下运行此测试并告诉我们它实际上在哪一行上失败了,这会有所帮助。 CTRL+R、CTRL+T 在调试模式下运行测试。
  • 我尝试这样做,当调试模式到达来自测试方法的 Action 中的 TryUpdateModel() 语句时,它会给出此错误。

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


【解决方案1】:

您在患者视图模型中的某处有一个空值。你可以在这里发布那种类型吗?这可能是problem with mixing models and view models

【讨论】:

    猜你喜欢
    • 2020-08-02
    • 2012-09-23
    • 2011-02-23
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 2020-08-12
    • 2017-06-26
    相关资源
    最近更新 更多